Requisições HTTP são síncronas, portanto a cada requisição necessitam uma resposta, mesmo que básica para que o motor que fez a requisição possa tomar decisões.
Uma das informações obrigatórias na resposta é o Status Code do HTTP, pois através somente do código já é possível tomar algumas ações.
Por exemplo, se receber o código 200, o motor já sabe que a requisição foi feita com sucesso, porém, se receber 500, já saberemos que houve um erro interno no servidor e essa requisição não obteve sucesso na ação desejada.
O REST permite modificar o Status Code do HTTP conforme desejar.
Existem alguns métodos responsáveis para tal finalidade, sendo:
Específicos para somente a mensagem
oRest:setStatusCode()
oRest:resetStatusCode()
Envolve também o código da mensagem
oRest:setFault()
Alimenta a mensagem de retorno, porém como você está indicando que ocorreu um erro, modifica o Código de Status do HTTP como 500.oRest:resetResponse()
Além de modificar o Código de Status do HTTP para o status inicial, ou seja, 200, apaga a mensagem setada até o momento.
Abaixo iremos demonstrar o uso de oRest:setStatusCode() e oRest:resetStatusCode()
Exemplo 1 (simples)
@get("sample/setStatusCode_1")
user function sampleSetStatusCode_1()
loval cUser := ''
local cReturn := ''
local jQuery
jQuery := oRest:getQueryRequest()
if ( jQuery <> Nil )
cUser := jQuery[ 'user' ]
endif
if ( !empty( cUser ) )
cReturn := '{"user":"' + cUser + '","message":""}'
else
oRest:setStatusCode(400) // Bad Request
cReturn := '{"user":"","message":"invalid user"}'
endif
oRest:setResponse( cReturn )
return
Exemplo 2 ("resetando" o status)
@get("sample/setStatusCode_2")
user function sampleSetStatusCode_2()
loval cUser := ''
local cReturn := '{"sample":"1"}'
local jQuery
oRest:setStatusCode(400) // Bad Request
if ( U_validParameters( 'user' ) )
oRest:resetStatusCode()
cReturn := processParameters()
else
cReturn := '{"user":"","message":"invalid user"}'
endif
oRest:setResponse( cReturn )
return