Regra da API REST sobre encapsulamento

11

Basta ler isso no livro de regras da API REST : GET e POST não devem ser usados ​​para encapsular outros métodos de solicitação .

O encapsulamento se refere a qualquer abuso de HTTP que mascara ou deturpa a intenção de uma mensagem e prejudica a transparência do protocolo. Uma API REST não deve comprometer seu design usando mal os métodos de solicitação do HTTP, em um esforço para acomodar clientes com vocabulário HTTP limitado . Sempre faça uso adequado dos métodos HTTP, conforme especificado pelas regras nesta seção. [destaques por mim]

Porém, muitas estruturas usam o tunelamento para expor as interfaces REST por meio de formulários HTML, pois <form>apenas conhecem GETe POST. Meu exemplo mais recente é um MethodRewriteMiddlewarepara balão (enviado pelo autor da estrutura): http://flask.pocoo.org/snippets/38/ .

Alguma maneira de cumprir a "Regra" sem hacks ou complementos em estruturas da web?

miku
fonte

Respostas:

4

Não, não existe. Portanto, se você precisar, quebre a regra de qualquer maneira.

Não sei qual é o problema. Protocolos encapsulam outros protocolos o tempo todo. O TCP / IP, por exemplo, possui quatro camadas dessa abstração .

Obviamente, o melhor caminho é que os clientes obtenham o programa e suportem os verbos HTTP corretamente. Mas não é um mundo perfeito.

Robert Harvey
fonte
Obrigado, bem, todo mundo está fazendo isso de qualquer maneira (e outros protocolos fazem isso por design, como você mencionou). Fiquei um pouco surpreso ao encontrar a "regra" escrita com tanta clareza.
Miku #