Árvore de páginas

Esta annotation deve ser utilizada quando for necessário desenvolver uma aplicação que responderá pelo método/verbo PUT. Este método/verbo substitui todas as atuais representações do recurso de destino pela carga de dados da requisição.

Abaixo veremos exemplos de sua utilização:


Exemplo utilizando função e recebendo parâmetro via path param

#include "tlpp-core.th"
#include "tlpp-rest.th"

/* --------------------------------------- */
@Put("examples/function/put/path/user/:user")
User Function examplesFunctionPutPath()
   Local cJson := ""
   Local jPath
   Local cBody := ""

   jPath := JsonObject():New()
   jPath := oRest:getPathParamsRequest()
   cBody := oRest:getBodyRequest()

   If (jPath <> Nil)
       cJson := '[ { "description": "examplesFunctionPutPath successfully executed, parameter received: ' + jPath['user'] + '" , "body received":"'+ cBody + '"} ]'
   Endif
Return oRest:setResponse(cJson)


Exemplo utilizando função recebendo parâmetro via query string

#include "tlpp-core.th"
#include "tlpp-rest.th"

/* --------------------------------------- */
@Put("examples/function/put/query/user")
User Function examplesFunctionPutQuery()
   Local cJson     := ""
   Local cBody     := ""
   Local jQuery


   jQuery := JsonObject():New()
   jQuery := oRest:getQueryRequest()
   cBody   := oRest:getBodyRequest()

   If (jQuery <> Nil)
       cJson := '[ {"description": "examplesFunctionPutQuery successfully executed, parameter received: ' + jQuery['user'] + '" , "body received":"'+ cBody + '"} ]'
   Endif
Return oRest:setResponse(cJson)


Exemplo utilizando classe com métodos recebendo parâmetro via path param e query string.

#include "tlpp-core.th"
#include "tlpp-rest.th"

Class classPutExamples

   Public Method New()

   @Put("examples/class/put/path/user/:user")
   Public Method methodExamplesPutPath()

   @Put("examples/class/put/query/user")
   Public Method methodExamplesPutQuery()

EndClass

Method New() class classPutExamples

Return self

/* --------------------------------------- */
Method methodExamplesPutPath() class classPutExamples

   Local cJson := ""
   Local cBody := ""
   Local jPath

   jPath := JsonObject():New()
   jPath := oRest:getPathParamsRequest()
   cBody := oRest:getBodyRequest()

   If (jPath <> Nil)
       cJson := '[ {"description": "examplesMethodPutPath successfully executed, parameter received: ' + jPath['user'] + '" , "body received":"'+ cBody + '"} ]'
   Endif
Return oRest:setResponse(cJson)

/* --------------------------------------- */
Method methodExamplesPutQuery() class classPutExamples
   Local cJson := ""
   Local cBody := ""
   Local jQuery

   jQuery := JsonObject():New()
   jQuery := oRest:getQueryRequest()
   cBody   := oRest:getBodyRequest()

   If (jQuery <> Nil)
       cJson := '[ {"description": "examplesMethodPutQuery successfully executed, parameter received: ' + jQuery['user'] + '" , "body received":"'+ cBody + '"} ]'
   Endif
Return oRest:setResponse(cJson)

Atenção:

Os objetos JSON retornados por métodos de oRest, como por exemplo oRest:getQueryRequest(), são referências ao objeto existente no REST e não uma cópia.

Existem alguns motivos para ser uma referência, são eles:

  • Melhorar performance do serviço;
  • Economia de memória;
  • Evitar que seja necessário limpar o objeto na saída da implementação do serviço REST.

Portanto, é imprescindível que não se manipule diretamente o Objeto, pois isso irá refletir nas próximas requisições, causando problemas difíceis de serem detectados.

Métodos:

oRest:getPathParamsRequest()
oRest:getQueryRequest()
oRest:getHeaderRequest()
oRest:getThreadPoolTlppData()
oRest:getServerTlppData()
oRest:getThreadPoolUserData()
oRest:getThreadPoolServerUserData()
oRest:getHeaderResponse()

  • Sem rótulos