Classe responsável por criar um builder da classe JsonAPIResponse para retornar na API Progress. Com esta classe é possível a criação facilitada da response através dos seguintes métodos:
Nome | Descrição |
|---|---|
| ok | Cria um retorno positivo com o payload e com o código do status HTTP 200 (é possível informar um status). |
| asError | Cria um retorno de erro com uma lista erros da RowErrors e com o código do status HTTP 500 (é possível informar um status). |
| asWarning | Cria um retorno positivo com uma lista warnings da RowErrors e com o código do status HTTP 200 (é possível informar um status). |
| empty | Cria um retorno vazio e com o código do status HTTP 200 (é possível informar um status). |
...
DEFINE OUTPUT PARAM jsonOutput AS JsonObject NO-UNDO.
DEFINE VARIABLE oJsonObject AS JsonObject NO-UNDO.
ASSIGN oJsonObject = NEW JSONObject().
jsonOutput = JsonAPIResponseBuilder:ok(oJsonObject).
/* ou */
jsonOutput = JsonAPIResponseBuilder:ok(oJsonObject, 201). /* retorna status 201 */
/* ou */
jsonOutput = JsonAPIResponseBuilder:ok(oJsonObject, TRUE). /* existencia de próximo registro */
...
/*
No exemplo acima será retornado um Json na variável "jsonOutput" no seguinte formato, podendo ter o status alterado:
{
"status":200,
"payload":{conteudo_do_oJsonObject}
}
*/ |
...
DEFINE OUTPUT PARAM jsonOutput AS JsonObject NO-UNDO.
DEFINE VARIABLE oAppError AS Progress.Lang.AppError NO-UNDO.
ASSIGN oAppError = NEW Progress.Lang.AppError().
oAppError:AddMessage("Descrição do Erro", 1).
jsonOutput = JsonAPIResponseBuilder:asError(oAppError).
/* ou */
jsonOutput = JsonAPIResponseBuilder:asError(oAppError, 401). /* retorna status 401 */
...
/*
No exemplo acima será retornado um Json na variável "jsonOutput" no seguinte formato, podendo ter o status alterado:
{
"status":500,
"payload":{
"code":1,
"message":"Descrição do Erro",
"type":"error",
"detailedMessage":"Progress.Lang.AppError"
}
}
*/ |
...
{method/dbotterr.i}
DEFINE OUTPUT PARAM jsonOutput AS JsonObject NO-UNDO.
CREATE RowErrors.
ASSIGN RowErrors.ErrorNumber = 1
RowErrors.ErrorDescription = "Descrição do Erro"
RowErrors.ErrorSubType = "ERROR".
jsonOutput = JsonAPIResponseBuilder:asError(TEMP-TABLE RowErrors:HANDLE).
...
/*
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":""
}
}
*/ |
...
DEFINE OUTPUT PARAM jsonOutput AS JsonObject NO-UNDO.
ASSIGN oJsonArray = NEW JsonArray()
oJsonObject = NEW JsonObject().
oJsonObject:Add("ErrorNumber", 1).
oJsonObject:Add("ErrorDescription", "Descrição do erro").
oJsonObject:Add("ErrorSubType", "error").
oJsonArray:Add(oJsonObject).
jsonOutput = JsonAPIResponseBuilder:asError(oJsonArray, 403). /* retorna status 403 */
...
/*
No exemplo acima será retornado um Json na variável "jsonOutput" no seguinte formato:
{
"status":403,
"payload":{
"code":"1",
"message":"Descrição do erro",
"type":"error",
"detailedMessage":""
}
}
*/ |
...
{method/dbotterr.i}
DEFINE OUTPUT PARAM jsonOutput AS JsonObject NO-UNDO.
DEFINE VARIABLE oJsonObject AS JsonObject NO-UNDO.
ASSIGN oJsonObject = NEW JSONObject().
CREATE RowErrors.
ASSIGN RowErrors.ErrorNumber = 1
RowErrors.ErrorDescription = "Descrição do alerta"
RowErrors.ErrorSubType = "warning".
jsonOutput = JsonAPIResponseBuilder:asWarning(oJsonObject, TEMP-TABLE RowErrors:HANDLE).
/* ou */
jsonOutput = JsonAPIResponseBuilder:asWarning(oJsonObject, 201, TEMP-TABLE RowErrors:HANDLE). /* retorna status 201 */
...
/*
No exemplo acima será retornado um Json na variável "jsonOutput" no seguinte formato, podendo ter o status alterado:
{
"status":200,
"payload":{
"_messages":{
"code":"1",
"message":"Descrição do alerta",
"type":"warning",
"detailedMessage":""
}
}
}
*/ |
...
{method/dbotterr.i}
DEFINE OUTPUT PARAM jsonOutput AS JsonObject NO-UNDO.
DEFINE VARIABLE oJsonArray AS JsonArray NO-UNDO.
ASSIGN oJsonArray = NEW JsonArray().
CREATE RowErrors.
ASSIGN RowErrors.ErrorNumber = 1
RowErrors.ErrorDescription = "Descrição do alerta"
RowErrors.ErrorSubType = "warning".
jsonOutput = JsonAPIResponseBuilder:asWarning(oJsonArray, FALSE, TEMP-TABLE RowErrors:HANDLE).
...
/*
No exemplo acima será retornado um Json na variável "jsonOutput" no seguinte formato:
{
"status":200,
"payload":{
"_messages":{
"code":"1",
"message":"Descrição do alerta",
"type":"warning",
"detailedMessage":""
},
"total":0,
"items":[],
"hasNext":false
}
}
*/ |
...
DEFINE OUTPUT PARAM jsonOutput AS JsonObject NO-UNDO.
jsonOutput = JsonAPIResponseBuilder:empty().
/* ou */
jsonOutput = JsonAPIResponseBuilder:empty(500). /* retorna status 500 */
...
/*
No exemplo acima será retornado um Json na variável "jsonOutput" no seguinte formato, podendo ter o status alterado:
{
"status":200,
"payload":{}
}
*/
|
| 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 |
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". |
O retorno dos objetos seguem o padrão conforme o "Guia de implementação de API V2.0". |