549 votes

Si un RESTful ' mis ' opération retourner quelque chose

Je me demandais quelles sont les opinions des peuples d’une opération de « PUT » RESTful qui retourne nothing(null) dans le corps de la réponse ?

747voto

system PAUSE Points 10051

La spécification HTTP (RFC 2616) a un certain nombre de recommandations qui leur sont applicables. Voici mon interprétation:

  • Le code d'état HTTP 200 OK de succès de la METTRE d'une mise à jour d'un ressources existantes. Pas de corps de la réponse nécessaire. (Conformément à l'Article 9.6, 204 No Content est encore plus approprié.)
  • Le code d'état HTTP 201 Created de succès de METTRE un nouveau ressources, avec les Uri et les métadonnées de la ressource nouvelle écho dans le corps de la réponse. (RFC 2616 Section 10.2.2)
  • Le code d'état HTTP 409 Conflict pour un MIS qui est échoué en raison pour un 3rd-partie de la modification, avec une liste de différences entre la tentative de mise à jour et la ressource actuelle dans la réponse corps. (RFC 2616 Section 10.4.10)
  • Le code d'état HTTP 400 Bad Request pour un échec METTRE, avec le naturel de la langue du texte (comme l'anglais) dans le corps de la réponse cela explique pourquoi le METTRE en échec. (RFC 2616 la Section 10.4)

216voto

LiorH Points 4623

Contrairement à la plupart des réponses ici, je pense effectivement que METTRE doit retourner la mise à jour de la ressource (en plus le code HTTP de cours).

La raison pourquoi vous voulez revenir à la ressource comme une réponse pour METTRE de l'opération est parce que lorsque vous envoyez une ressource représentation au serveur, le serveur peut également appliquer un peu de traitement de cette ressource, de sorte que le client aimerait savoir comment cette ressource une fois la requête terminée avec succès. (sinon, il faudra émettre une autre requête GET).

14voto

Intéressant de noter que backbone.js va mettre à jour son modèle en utilisant les données retournées d’une option de vente. Juste été piégé par la présente ; C’est ce qui m’a amené ici !

4voto

Brian Agnew Points 143181

La spécification HTTP/1.1 (section 9.6) décrit les codes d’erreur/de réponse appropriée. Cependant il ne traite pas le contenu de la réponse.

Ce que vous attendez ? Un simple code de réponse HTTP (200 etc.) semble simple et claire pour moi.

0voto

dc360 Points 109

Code de réponse http de 201 pour « Créé » accompagnée d’un en-tête « Lieu » au point où le client peut trouver la ressource nouvellement créée.

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