Serviços web RESTful e verbos HTTP
-
09-06-2019 - |
Pergunta
Qual é o conjunto mínimo de verbos HTTP que um servidor deve permitir para que um serviço web seja classificado como RESTful?
E se meu hoster não permitir COLOCAR e EXCLUIR?
Isso é realmente importante, posso viver feliz para sempre com apenas PEGAR e PUBLICAR ?
Atualizar: Obrigado pelas respostas pessoal, A resposta de Rogério provavelmente foi melhor por causa do link para a entrevista de Bill Venners e Elliotte Rusty Harold.Agora entendi.
Solução
Sim, você pode viver sem PUT e DELETE.
Este artigo explica por quê:http://www.artima.com/lejava/articles/why_put_and_delete.html
Embora para os verdadeiros RESTafrianos isso possa ser uma heresia, no mundo real você faz o que pode, com o que tem.Seja o mais racional possível e o mais consistente possível com sua própria convenção, mas você pode definitivamente construir um bom sistema RESTful sem P e D.
rp
Outras dicas
Você também pode usar X-Http-Verb-Override:DELETE inst.de HTTP DELETE.Isso também é útil para clientes Silverlight que não podem alterar os verbos HTTP e suportam apenas GET e POST...
Se você usar apenas GET e POST, ainda será RESTful.Seu serviço da web só pode fazer coisas que exigem apenas GET ou POST, então tudo bem.
REST permite quebrar a convenção do protocolo se as implementações do protocolo forem quebradas (de modo que as únicas coisas não padrão que você faz são contornar as partes quebradas da implementação).Portanto, é permitido no REST usar algum outro método para representar verbos geralmente não suportados, como DELETE ou PUT.
editar:Aqui está uma citação de Fielding, que criou e definiu REST:
Uma API REST não deve conter nenhuma alteração nos protocolos de comunicação além do preenchimento ou correção de detalhes de bits subespecificados de protocolos padrão, como o método PATCH do HTTP ou o campo de cabeçalho do link.Soluções alternativas para implementações quebradas (como aqueles navegadores estúpidos o suficiente para acreditar que o HTML define o conjunto de métodos HTTP) devem ser definidas separadamente, ou pelo menos em apêndices, com a expectativa de que a solução alternativa eventualmente se tornará obsoleta.[A falha aqui implica que as interfaces de recursos são específicas do objeto, e não genéricas.]
Os navegadores atuais apenas lidam com GETS + POSTS.No Rails, por exemplo, PUTS + DELETES são “falsificados” através de campos de formulário ocultos.
A menos que sua estrutura tenha alguma solução alternativa para "suportar" PUTS + DELETES, não se preocupe com eles por enquanto.