Estou projetando uma API para passar por HTTP e estou pensando se o uso do comando HTTP POST, mas apenas com parâmetros de consulta de URL e sem corpo de solicitação, é um bom caminho.
Considerações:
- O "bom design da Web" exige que ações não idempotentes sejam enviadas via POST. Esta é uma ação não idempotente.
- É mais fácil desenvolver e depurar este aplicativo quando os parâmetros de solicitação estão presentes no URL.
- A API não se destina ao uso generalizado.
- Parece que fazer uma solicitação POST sem corpo levará um pouco mais de trabalho, por exemplo, um
Content-Length: 0
cabeçalho deve ser explicitamente adicionado. - Também me parece que um POST sem corpo é um pouco contrário às expectativas da maioria dos desenvolvedores e estruturas HTTP.
Existem mais armadilhas ou vantagens em enviar parâmetros em uma solicitação POST por meio da consulta de URL em vez do corpo da solicitação?
Editar: A razão pela qual isso está sendo considerado é que as operações não são idempotentes e têm efeitos colaterais diferentes da recuperação. Veja a especificação HTTP :
Em particular, foi estabelecida a convenção de que os métodos GET e HEAD NÃO DEVEM ter o significado de tomar uma ação diferente da recuperação. Esses métodos devem ser considerados "seguros". Isso permite que os agentes do usuário representem outros métodos, como POST, PUT e DELETE, de uma maneira especial, para que o usuário fique ciente do fato de que uma ação possivelmente insegura está sendo solicitada.
...
Os métodos também podem ter a propriedade "idempotência", pois (além de problemas de erro ou expiração) os efeitos colaterais de N> 0 solicitações idênticas são os mesmos que para uma única solicitação. Os métodos GET, HEAD, PUT e DELETE compartilham essa propriedade. Além disso, os métodos OPTIONS e TRACE NÃO DEVEM ter efeitos colaterais e, portanto, são inerentemente idempotentes.