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 ?
Réponses
Trop de publicités?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)
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).
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 !
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.