Histórico da Página
Esta função atualiza a mensagem de erro do método REST.
Abrangência
ERP 11 e superiores
Sintaxe
Informações | ||
---|---|---|
| ||
SetRestFault(nCode,cMessage,lJson,nStatus,cDetailMsg,cHelpUrl,aDetails) |
Parâmetros
Nome | Descrição | Obrigatório | Referência |
---|---|---|---|
nCode | Código de erro da API REST. Utilize uma códificação seqüêncial para cada mensagem de erro do método REST | X | |
cMessage | Mensagem de erro da API REST. A mensagem deve ser clara e na notação I18N. (User Friendly) | X | |
lJson | .T. para mensagem no formato Json e .F. para HTML | ||
nStatus | Código de Status HTTP da resposta. (Caso não seja informado será assumido o valor de nCode, caso seja um valor inválido sera assumido 500) *Disponível a partir da versão 12.1.23 da Lib. | ||
cDetailMsg | Mensagem com detalhamento técnico. *Disponível a partir da versão 12.1.23 da Lib apenas com lJson .T. | ||
cHelpUrl | Link para a documentação do erro. *Disponível a partir da versão 12.1.23 da Lib apenas com lJson .T. | ||
aDetails | Array contendo outros erros no mesmo formato do erro principal (sem o lJson na sequência). *Disponível a partir da versão 12.1.23 da Lib apenas com lJson .T. |
Exemplo de array de detalhes com 3 error sendo que o terceiro tem um sub-erro:
{ {nCode,cMessage,cDetailMsg,cHelpUrl,{}}, {nCode,cMessage,cDetailMsg,cHelpUrl,{}},
{nCode,cMessage,cDetailMsg,cHelpUrl,{nCode,cMessage,cDetailMsg,cHelpUrl,{}}} }
Exemplo com apenas um erro:
{ {nCode,cMessage,cDetailMsg,cHelpUrl,{}} }
Informações | ||
---|---|---|
| ||
Para que os parâmetros cDetailMsg, cHelpUrl e aDetails sejam retornados pela função SetRestFault, é necessário que a API esteja no padrão TTALK: API Protheus com mensagens de erro no padrão TTALK |
Informações | ||
---|---|---|
| ||
Para mais detalhes sobre a estrutura da mensagem de erro, veja o Guia de Implementação de API: https://tdn.totvs.com.br/pages/viewpage.action?pageId=274849083#GuiadeImplementa%C3%A7%C3%A3odeAPI-Mensagensdeerromensagensdeerro |
Exemplo
Bloco de código | ||||
---|---|---|---|---|
| ||||
#INCLUDE "TOTVS.CH" #INCLUDE "RESTFUL.CH" #INCLUDE "FWMVCDEF.CH" #INCLUDE "FWSCIMUSERS.CH" WSRESTFUL Users DESCRIPTION "Descrição" WSDATA cResponse AS STRING WSDATA Count AS INTEGER OPTIONAL WSDATA StartIndex AS INTEGER OPTIONAL WSMETHOD GET DESCRIPTION "GET" WSMETHOD POST DESCRIPTION "POST" WSMETHOD PUT DESCRIPTION "PUT" WSMETHOD DELETE DESCRIPTION "DELETE" END WSRESTFUL WSMETHOD GET WSRECEIVE StartIndex,Count WSSEND cResponse WSSERVICE Users Local uUserId := "" Local cJson := "" Local lRetorno := .T. Local aUsers := {} Local oUser Local oGroup Local oSuper Local nMax := 0 Local nX := 0 Local nUser := 0 Local nMaxUser := 1 Local nCountUser := 0 Local nCount := 0 Local nStartIndex := 1 ::cResponse := "" //-------------------------------------- //Pesquisa o código do usuário que vem na URL, exemplo: // // GET /Users/2819c223-7f76-453a-919d-413861904646 // Host: example.com // Accept: application/json // Authorization: Bearer h480djs93hd8 // //-------------------------------------- If Len(::AURLPARMS) > 0 If Len(::AURLPARMS) > 1 lRetorno := .F. SetRestFault(001,STR0001) //"Excesso de parâmetros na URL. Apenas um é permitido para este método" EndIf //-------------------------------------- //List/Query Resources: // // GET /Users?startIndex=1&count=10 // Host: example.com // Accept: application/json // Authorization: Bearer h480djs93hd // //-------------------------------------- Else ... EndIf //-------------------------------------- // Verifica se a saída é JSON //-------------------------------------- If ::cFormat <> "json" lRetorno := .F. SetRestFault(002,STR0002) //"Somente o formato json é permitido" EndIf If lRetorno ... ::cResponse := cJson EndIf Return(lRetorno) |