Classe responsável por tratar e manipular os dados e gerar o JSON para retornar na API Progress. Através dela é possível a criação da response com as seguintes informações:
DEFINE OUTPUT PARAM jsonOutput AS JsonObject NO-UNDO. DEFINE VARIABLE oJsonObject AS JsonObject NO-UNDO. DEFINE VARIABLE oResponse AS JsonAPIResponse NO-UNDO. ASSIGN oJsonObject = NEW JSONObject(). oResponse = NEW JsonAPIResponse(oJsonObject). oResponse:setHasNext(FALSE). oResponse:setStatus(500). oResponse:setRowErrors(JsonAPIUtils:convertTempTableToJsonObject(TEMP-TABLE RowErrors:HANDLE):getJsonArray("RowErrors")). jsonOutput = oResponse:createJsonResponse(). |
Parâmetro | Descrição |
---|---|
JsonConstruct | Objeto JsonObject ou JsonArray com o conteúdo a ser retornado pela API Progress (Payload) |
Nome | Descrição | |
---|---|---|
setStatus | Seta o Status HTTP do retorno da requisição (200, 404, 500, etc). | |
setHasNext | Seta o indicador da existências de mais registros para paginação. | |
setRowErrors | Seta um objeto JsonArray com a representação da tabela de erros (RowErrors). Para a conversão da tabela de erros em objeto JsonArray utilize o seguinte exemplo:
| |
setAppError | Seta um objeto de erro do tipo Progress.Lang.AppError | |
setError | Seta um objeto de erro do tipo Progress.Lang.Error
| |
createJsonResponse | Cria o objeto JsonObject estruturado para ser retornado pela API Progress. |
Campo | Json | Descrição |
---|---|---|
ErrorNumber | code | Código da mensagem |
ErrorDescription | message | Descrição da mensagem |
ErrorSubType | type | Tipo de mensagem |
ErrorHelp | detailedMessage | Help da mensagem |
... {method/dbotterr.i} DEFINE OUTPUT PARAM jsonOutput AS JsonObject NO-UNDO. DEFINE VARIABLE oJsonObject AS JsonObject NO-UNDO. DEFINE VARIABLE oResponse AS JsonAPIResponse NO-UNDO. ASSIGN oJsonObject = NEW JSONObject() oResponse = NEW JsonAPIResponse(oJsonObject). CREATE RowErrors. ASSIGN RowErrors.ErrorNumber = 1 RowErrors.ErrorDescription = "Descrição do Erro" RowErrors.ErrorSubType = "ERROR". CREATE RowErrors. ASSIGN RowErrors.ErrorNumber = 2 RowErrors.ErrorDescription = "Descrição do Erro2" RowErrors.ErrorSubType = "ERROR". oResponse:setHasNext(FALSE). oResponse:setStatus(500). oResponse:setRowErrors(JsonAPIUtils:convertTempTableToJsonObject(TEMP-TABLE RowErrors:HANDLE):getJsonArray("RowErrors")). jsonOutput = oResponse:createJsonResponse(). ... /* No exemplo acima será retornado um Json na variável "jsonOutput" no seguinte formato: { "status":500, "payload":{ "code":"1", "message":"Descrição do Erro", "type":"error", "detailedMessage":"", "details":[{ "code":"2", "message":"Descrição do Erro2", "type":"error", "detailedMessage":"" }] } } */ |
A tag "details" somente aparecerá no JSON quando houver mais de uma mensagem do mesmo tipo, exemplo: duas mensagens de "error" ou duas mensagens de "warning". |