Histórico da Página
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:
- Payload (corpo da requisição)
- Status de retorno
- Indicador de existência de registros ainda pendentes (HasNext).
- Representação da tabela temporária de erros (JsonArray da RowErrors).
- Exceção de erro Progress do tipo Progress.Lang.AppError.
- Exceção de erro Progress do tipo Progress.Lang.Error.
Bloco de código |
---|
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(). |
Construtor
Parâmetro | Descrição |
---|---|
JsonConstruct | Objeto JsonObject ou JsonArray com o conteúdo a ser retornado pela API Progress (Payload) |
Métodos
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. |
Mapeamento da RowErrors (include method/dbotterr.i):
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 |
Bloco de código | ||
---|---|---|
| ||
...
{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":""
}]
}
}
*/ |
Informações | ||
---|---|---|
| ||
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". |
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas