Esta função atualiza a mensagem de erro do método REST.

Abrangência

ERP 11 e superiores

Sintaxe

SetRestFault(nCode,cMessage,lJson,nStatus,cDetailMsg,cHelpUrl,aDetails)

Parâmetros

NomeDescriçãoObrigatórioReferência
nCodeCódigo de erro da API REST. Utilize uma códificação seqüêncial para cada mensagem de erro do método RESTX
cMessageMensagem 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

nStatusCó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.

aDetailsArray 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,{}} }



TTALK

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

Guia de Implementação de API

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

#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)