O modo mais simples de utilizar e quais verbos/métodos o serviço REST irá responder é através de Annotations.
A utilização do recurso de annotations na linguagem TL++ possibilitou a simplificação da escrita nas aplicações REST.
Os verbos/métodos HTTP comuns utilizados nestes tipos de requisições já estão com as suas respectivas annotations configuradas prontas para serem utilizadas.
Atualmente, temos disponíveis os verbos/métodos mais usados em serviços REST, sendo:
GET
O métodoGET
GET
devem retornar apenas dados.POST
O métodoPOST
é utilizado para adicionar recursos no servidor REST. Se for um serviço que seja o cadastro de clientes, o métodoPOST
irá criar um registro novo referente a um cliente novo.PUT
O métodoPUT
modifica um recurso existente no servidor. Na semântica usada em modo geral, pelo métodoPUT
enviamos todos os dados do recurso, independentemente se serão modificados somente partes dos dados.
PATCH
O métodoPATCH
modifica um recurso existente no servidor. Na semântica usada em modo geral, pelo métodoPATCH
enviamos somente os dados que serão modificados.
DELETE
O métodoDELETE
é usado para apagar um recurso no servidor REST.
Nota: Embora os métodos PUT e PATCH sejam usados semanticamente de forma diferentes, tecnicamente não há exigência para que as aplicações serem implementadas desse modo.
Existem implementações que utilizam Criar e Modificar recursos através de um único método, ou seja, POST, PUT e PATCH são usados através, por exemplo, do método POST e o tratamento é feito na lógica implementada no servidor.
Embora não esteja de acordo com a semântica proposta, não significa que esteja errado.
A annotation utiliza duas propriedades, embora somente 1 é essencial para o funcionamento do serviço, sendo:
endpoint
Essa propriedade é obrigatória e é responsável para definir o endpoint utilizado na URL para que o usuário possa fazer uma requisição ao serviço.
Abaixo iremos exemplificar um método GET, informando todas as propriedades, e somente a endpoint em suas duas formas.
/*
Exemplo 01
Informamos as duas propriedades.
Note que nesse modo, é obrigatório informar nominalmente as propriedades.
*/
@Get( endpoint="sample/full", description='exemplo usando as duas propriedades' )
user function sampleFull()
......
oRest:setResponse(cJson)
return
/*
Exemplo 02
Informamos somente endpoint, que é obrigatória.
Note que informamos nominalmente a propriedade.
*/
@Get( endpoint="sample/onlyEndpoint1" )
user function sampleOnlyEndpoint1()
......
oRest:setResponse(cJson)
return
/*
Exemplo 03
Informamos somente endpoint, que é obrigatória.
Note que informamos NÃO nominalmente a propriedade, esse é modo mais simples de utilizar a annotation, pois irá atribuir o valor informado automaticamente para o endpoint.
*/
@Get( "sample/onlyEndpoint2" )
user function sampleOnlyEndpoint2()
......
oRest:setResponse(cJson)
return
Abaixo é possível saber mais sobre cada verbo/método: