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:
- ok (JsonObject com e sem status);
- ok (JsonArray com indicador de existência de próximo registro);
- asError (Interface Progress.Lang.Error com e sem status);
- asError (Tabela temporária RowErrors);
- asError (JsonArray com status);
- asWarning (JsonObject com a tabela temporária RowErrors);
- asWarning (JsonObject com o status e a tabela temporária RowErrors);
- asWarning (JsonArray com indicador de existência de próximo registro e a tabela temporária RowErrors);
- empty(com e sem status).
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). |
Exemplos
JsonAPIResponseBuilder:ok()
... 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} } */
JsonAPIResponseBuilder:asError() - Interface Error
... 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" } } */
JsonAPIResponseBuilder:asError() - Tabela temporária RowErrors
... {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":"" } } */
JsonAPIResponseBuilder:asError() - JsonArray com status
... 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":"" } } */
JsonAPIResponseBuilder:asWarning() - Tabela temporária RowErrors
... {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":"" } } } */
JsonAPIResponseBuilder:asWarning() - JsonArray
... {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 } } */
JsonAPIResponseBuilder:empty()
... 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":{} } */
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 |
Nota
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".
Importante
O retorno dos objetos seguem o padrão conforme o "Guia de implementação de API V2.0".
Visão Geral
Import HTML Content
Conteúdo das Ferramentas