Je conçois une API pour parcourir HTTP et je me demande si l'utilisation de la commande HTTP POST, mais avec des paramètres de requête URL uniquement et sans corps de demande, est une bonne façon de procéder.
Considérations:
- Une «bonne conception Web» requiert que des actions non idempotentes soient envoyées via POST. Il s'agit d'une action non idempotente.
- Il est plus facile de développer et de déboguer cette application lorsque les paramètres de demande sont présents dans l'URL.
- L'API n'est pas destinée à une utilisation généralisée.
- Il semble que faire une requête POST sans corps prendra un peu plus de travail, par exemple un en-
Content-Length: 0
tête doit être explicitement ajouté. - Il me semble également qu'un POST sans corps est un peu contraire aux attentes de la plupart des développeurs et des frameworks HTTP.
Y a-t-il d'autres pièges ou avantages à envoyer des paramètres sur une requête POST via la requête URL plutôt que le corps de la requête?
Edit: La raison pour laquelle cela est envisagé est que les opérations ne sont pas idempotentes et ont des effets secondaires autres que la récupération. Voir la spécification HTTP :
En particulier, la convention a été établie que les méthodes GET et HEAD NE DEVRAIENT PAS avoir la signification de prendre une action autre que la récupération. Ces méthodes doivent être considérées comme «sûres». Cela permet aux agents utilisateurs de représenter d'autres méthodes, telles que POST, PUT et DELETE, d'une manière spéciale, afin que l'utilisateur soit informé du fait qu'une action potentiellement dangereuse est demandée.
...
Les méthodes peuvent également avoir la propriété d '"idempotence" en ce que (à part les problèmes d'erreur ou d'expiration) les effets secondaires de N> 0 requêtes identiques sont les mêmes que pour une seule requête. Les méthodes GET, HEAD, PUT et DELETE partagent cette propriété. De plus, les méthodes OPTIONS et TRACE NE DEVRAIENT PAS avoir d'effets secondaires et sont donc intrinsèquement idempotentes.