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:
Abaixo iremos demonstrar o uso de oRest:setStatusCode() e oRest:resetStatusCode()
Exemplo 1 (simples)
#include "tlpp-core.th"
#include "tlpp-rest.th"
@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)
cReturn := '{"user":"","message":"invalid user"}'
endif
oRest:setResponse( cReturn )
return
Exemplo 2 ("resetando" o status)
#include "tlpp-core.th"
#include "tlpp-rest.th"
@get("sample/setStatusCode_2")
user function sampleSetStatusCode_2()
loval cUser := ''
local cReturn := '{"sample":"1"}'
local jQuery
oRest:setStatusCode(400)
if ( U_validParameters( 'user' ) )
oRest:resetStatusCode()
cReturn := processParameters()
else
cReturn := '{"user":"","message":"invalid user"}'
endif
oRest:setResponse( cReturn )
return
Note que nesse exemplo, antes de validar os parâmetros já setamos o Status Code como 400 e após verificarmos se todos os parâmetros estão OK, voltamos ao Estado original..