Árvore de páginas

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

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

#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) // Bad Request
   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) // Bad Request
 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..

  • Sem rótulos