251 votes

Est-il considéré comme une mauvaise pratique d’effectuer HTTP POST sans corps d’entité ?

J’ai besoin d’appeler un processus qui ne nécessite aucune entrée de l’utilisateur, juste un déclencheur. Je prévois d’utiliser POST /uri sans corps pour déclencher le processus. Je veux savoir si cela est considéré comme mauvais du point de vue HTTP et REST?

227voto

Darrel Miller Points 56797

J’ai posé cette question au groupe de travail HTTP de l’IETF il y a quelques mois. La réponse courte est: NON, ce n’est pas une mauvaise pratique (mais je suggère de lire le fil pour plus de détails).

95voto

Adam Vandenberg Points 8098

L’utilisation d’un POST au lieu d’un GET est parfaitement raisonnable, car elle indique également au serveur (et aux passerelles en cours de route) de ne pas renvoyer de réponse mise en cache.

69voto

manuel aldana Points 4317

POST est complètement OK. Par différence de GET avec POST, vous modifiez l’état du système (très probablement votre déclencheur est de « faire » quelque chose et de modifier les données).

J’ai déjà utilisé POST sans charge utile et il « se sent » OK. Une chose que vous devez faire lorsque vous utilisez POST sans charge utile: En-tête de passage `` . Je me souviens de problèmes avec certains proxys lorsque je api-client ne l’a pas passé.

18voto

yadab Points 708

Si vous utilisez POST /uri sans corps, c’est quelque chose comme utiliser une fonction qui ne prend pas d’argument .e.g int post (void); il est donc raisonnable d’avoir une fonction à votre classe de ressources qui peut modifier l’état d’un objet sans avoir d’argument. Si vous envisagez d’implémenter la fonction tactile Unix pour un URI, n’est-ce pas un bon choix ?

3voto

marko982 Points 111

Oui, il est possible d’envoyer une demande POST sans corps et d’utiliser à la place des paramètres de chaîne de requête. Mais attention si vos paramètres contiennent des caractères qui ne sont pas valides HTTP, vous devrez les encoder.

Par exemple, si vous avez besoin de POST 'hello world' vers et le point final, vous devrez le faire ressembler à ceci: http://api.com?param=hello%20world

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X