Páginas filhas
  • 02. Exemplo com todos os métodos

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Bloco de código
firstline1
linenumberstrue
#INCLUDE "TOTVS.CH"
#INCLUDE "RESTFUL.CH"
WSRESTFUL sample DESCRIPTION "Exemplo de serviço REST"
 
WSDATA count      AS INTEGER
WSDATA startIndex AS INTEGER 
 
WSMETHOD GET DESCRIPTION "Exemplo de retorno de entidade(s)" WSSYNTAX "/sample || /sample/{id}"
WSMETHOD POST DESCRIPTION "Exemplo de inclusao de entidade" WSSYNTAX "/sample/{id}"
WSMETHOD PUT DESCRIPTION "Exemplo de alteração de entidade" WSSYNTAX "/sample/{id}"
WSMETHOD DELETE DESCRIPTION "Exemplo de exclusão de entidade" WSSYNTAX "/sample/{id}"
 
END WSRESTFUL
 
WSMETHOD GET WSRECEIVE startIndex, count WSSERVICE sample
Local i
 
// define o tipo de retorno do método
::SetContentType("application/json")
 
// verifica se recebeu parametro pela URL
// exemplo: http://localhost:8080/sample/1
If Len(::aURLParms) > 0
   
   // insira aqui o código para pesquisa do parametro recebido
 
   // exemplo de retorno de um objeto JSON 
   ::SetResponse('{"id":' + ::aURLParms[1] + ', "name":"sample"}')
 
Else
   // as propriedades da classe receberão os valores enviados por querystring
   // exemplo: http://localhost:8080/sample?startIndex=1&count=10
   DEFAULT ::startIndex := 1, ::count := 5
   
   // exemplo de retorno de uma lista de objetos JSON
   ::SetResponse('[')
   For i := ::startIndex To ::count + 1
      If i > ::startIndex
         ::SetResponse(',')
      EndIf
      ::SetResponse('{"id":' + Str(i) + ', "name":"sample"}')
   Next
   ::SetResponse(']')
EndIf
Return .T.
 
WSMETHOD POST WSSERVICE sample
Local lPost := .T.
// Exemplo de retorno de erro
If Len(::aURLParms) == 0
 SetRestFault(400, "id parameter is mandatory")
 lPost := .F.
Else
 // insira aqui o código para operação inserção
 // exemplo de retorno de um objeto JSON 
 ::SetResponse('{"id":' + ::aURLParms[1] + ', "name":"sample"}')
EndIf
Return lPost
 
WSMETHOD PUT WSSERVICE sample
Local lPut := .T.
 
// Exemplo de retorno de erro
If Len(::aURLParms) == 0
   SetRestFault(400, "id parameter is mandatory")
   lPut := .F.
 
Else
   // insira aqui o código para operação de atualização
 
   // exemplo de retorno de um objeto JSON 
   ::SetResponse('{"id":' + ::aURLParms[1] + ', "name":"sample"}')
EndIf
Return lPut
 
WSMETHOD DELETE WSSERVICE sample
Local lDelete := .T.
 
// Exemplo de retorno de erro
If Len(::aURLParms) == 0
   SetRestFault(400, "id parameter is mandatory")
   lDelete := .F.
 
Else
   // insira aqui o código para operação exclusão
   // exemplo de retorno de um objeto JSON 
   :SetResponse('{"id":' + ::aURLParms[1] + ', "name":"sample"}')
EndIf
Return lDelete