Qual verbo HTTP devo usar para acionar uma ação em um serviço da web REST?
Ao considerar os detalhes de um serviço REST, geralmente é útil considerar esta heurística: como você implementaria isso em um site?
O HTML pode descrever apenas solicitações GET e POST de forma nativa. Então, podemos começar a procurar lá.
É GET
apropriado? Para responder a essa pergunta, precisamos pensar nas suposições que clientes e componentes intermediários podem fazer GET
. A semântica de GET
são seguros
o cliente não solicita e não espera nenhuma alteração de estado no servidor de origem como resultado da aplicação de um método seguro a um recurso de destino. Da mesma forma, não se espera que o uso razoável de um método seguro cause danos, perda de propriedade ou carga incomum no servidor de origem.
A implicação, portanto, é que os clientes e os componentes intermediários têm o poder de chamar uma solicitação GET com a frequência necessária para satisfazer suas próprias preocupações. As aranhas podem obter recursos indiscriminadamente para atualizar seus índices. Os caches podem ser pré-buscados. Em uma rede não confiável, as mensagens perdidas podem ser repetidas com a frequência necessária para garantir pelo menos uma resposta.
Será usado para recarregar configurações, cache, etc.
Se essas coisas são caras, talvez você não queira que os clientes enviem essas solicitações a seu critério.
POST
, por outro lado, é efetivamente irrestrito - isso reduz bastante as suposições que os clientes genéricos podem fazer. Você não obtém componentes que fazem solicitações POST especulativas porque eles seriam defeituosos - nada no padrão diz que está tudo bem.
PUT
, PATCH
, DELETE
... estes são métodos inseguros com a semântica mais específicos do que POST
; se eles são ou não apropriados, dependerá do seu modelo de recursos.
Uma idéia importante a ser lembrada é que os métodos HTTP pertencem ao domínio do documento (consulte a palestra de Jim Webber, 2011 ). Os efeitos que você está descrevendo provavelmente não fazem parte do domínio do documento, mas são efeitos colaterais invocados quando os documentos são alterados. . Isso lhe dá muita liberdade em termos de como você organiza seus documentos para realizar o trabalho.