Basicamente, uma mensagem de erro é definida pelo Status Code do HTTP, embora possa ser complementada ou definida pelo Corpo da Mensagem.
A forma de geração de mensagem de erro é uma preferência pessoal, pois há quem defenda implementações mais simples e os códigos e controles fiquem todos na mensagem e há quem defenda seguir a risca a obrigatoriedade de mudar o Status Code do HTTP. Não iremos divagar sobre o assunto nem defender modo algum, apenas iremos mostrar como implementar de forma simples os modos.
Exemplo utilizando a forma mais simples de geração de erro
Nesse exemplo, com o uso de apenas 1 (um) método, já definimos a mensagem e o Status Code.
@get("sample/setFault")
user function samplesetFault()
local cUser := ''
local jQuery
jQuery := oRest:getQueryRequest()
if ( jQuery <> Nil )
cUser := jQuery[ 'user' ]
endif
if ( upper(cUser) == 'ADMIN' )
oRest:setResponse( '{"admin":"ok"}' )
else
oRest:setFault( '{"admin":"no"}' )
endif
return
Note que utilizamos o método oRest:setFault
, nele definimos a mensagem que gostaríamos de retornar, porém, automaticamente o REST server já marca o Status Code como 500.
Caso deseje outro Status code, sugerimos utilizar a implementação do segundo exemplo.
Mais detalhes sobre o método
oRest:setFault()
Exemplo utilizando 2 métodos
Nesse exemplo, faremos uso de 2 (dois) métodos, uma para definimos a mensagem e o outro para o Status Code.
@get("sample/erro/mode_2")
user function sampleErrorMode2()
local cUser := ''
local cReturn := ''
local jQuery
jQuery := oRest:getQueryRequest()
if ( jQuery <> Nil )
cUser := jQuery[ 'user' ]
endif
if ( upper(cUser) == 'ADMIN' )
cReturn := '{"admin":"ok"}'
else
oRest:setStatusCode( 403 ) // Forbidden
cReturn := '{"admin":"no"}'
endif
oRest:setResponse( cReturn )
return
Nesse caso, utilizamos um método para modificar o Status Code conforme nossa necessidade, pois 500 (Internal Server Error) não determina o erro correto, e depois seguimos definindo a mensagem de retorno..
Mais detalhes sobre modificar o