Si une opération reposant " PUT " retourner quelque chose

je me demandais ce que les gens pensaient d'une opération PUT qui ne renvoie rien (nul) dans le corps de réponse.

321
demandé sur Francesco Boi 2009-04-28 17:07:01
la source

10 ответов

la spécification HTTP ( RFC 2616 ) comporte un certain nombre de recommandations applicables. Voici mon interprétation:

  • code de statut HTTP 200 OK pour une mise à jour réussie d'un ressources existantes. Pas de corps de la réponse nécessaire. (Par Section 9.6 , 204 No Content est encore plus approprié.)
  • code de statut HTTP 201 Created pour une PUT réussie d'un nouveau ressources, avec L'URI le plus spécifique pour la nouvelle ressource retourné dans le champ d'en-tête de localisation et tout autre URI et métadonnées pertinents de la ressource repris dans le corps de réponse. ( RFC 2616 Section 10.2.2 )
  • code de statut HTTP 409 Conflict pour une PUT qui n'est pas réussie en raison pour un 3 rd -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 )
  • code de statut HTTP 400 Bad Request pour un échec Mettre, avec le texte en langage naturel (tel que l'anglais) dans le corps de réponse cela explique pourquoi le METTRE en échec. ( RFC 2616 Section 10.4 )
487
répondu system PAUSE 2016-02-26 18:10:37
la source

contrairement à la plupart des réponses ici, je pense en fait que PUT devrait retourner la ressource mise à jour (en plus du Code HTTP bien sûr).

la raison pour laquelle vous voulez retourner la ressource en réponse à L'opération de PUT est que lorsque vous envoyez une représentation de la ressource au serveur, le serveur peut également appliquer un traitement à cette ressource, de sorte que le client voudrait savoir à quoi ressemble cette ressource une fois la requête terminée. réussi. (sinon il devra émettre une autre requête GET).

112
répondu LiorH 2009-04-28 18:13:25
la source

code de réponse Http 201 pour " Created "ainsi qu'un en-tête" Location " pour indiquer où le client peut trouver la ressource nouvellement créée.

3
répondu dc360 2012-07-31 22:37:08
la source

le HTTP/1.1 spec (section 9.6) traite des codes de réponse/erreur appropriés. Cependant, il n'aborde pas le contenu de la réponse.

Qu'attendez-vous ? Un code de réponse HTTP simple (200 etc. semble simple et sans ambiguïté pour moi.

2
répondu Brian Agnew 2009-04-28 17:13:01
la source

je pense qu'il est possible pour le serveur de retourner du contenu en réponse à un PUT. Si vous utilisez un format d'enveloppe de réponse qui permet des données latérales (comme le format consommé par ember-data), alors vous pouvez également inclure d'autres objets qui peuvent avoir été modifiés via des déclencheurs de base de données, etc. (Sideloaded data est explicitement pour réduire le nombre de requêtes, et cela semble être un bon endroit pour optimiser.)

si j'accepte la mise et que je n'ai rien à rapporter, Je utilisez le code d'état 204 sans corps. Si j'ai quelque chose à signaler, j'utilise le code 200, et j'inclus un corps.

2
répondu shaunc 2014-12-31 13:00:35
la source

j'ai utilisé RESTful API dans mes services, et voici mon avis: Tout d'abord, nous devons obtenir une vue commune PUT est utilisé pour mettre à jour une ressource de ne pas créer ou obtenir.

j'ai défini les ressources avec: Stateless resource et Stateful resource :

  • ressources apatrides Pour ces ressources, il suffit de retourner le code HttpCode avec le corps vide, c'est suffisant.

  • ressources étatiques Par exemple: le la ressource de version. Pour ce type de ressources, vous devez fournir la version lorsque vous voulez la modifier, alors retournez la ressource complète ou retournez la version au client, de sorte que le client n'a pas besoin d'envoyer une demande get après l'action de mise à jour.

mais , pour un service ou un système, le garder simple , clearly , easy to use and maintain est la chose la plus importante.

1
répondu Bluce Liu 2017-03-29 15:32:27
la source

semble correct... bien que je pense à une indication rudimentaire de succès/échec/Heure de publication/ Nombre d'octets reçus/etc. serait préférable.

modifier: je pensais à l'intégrité des données et/ou à la tenue des dossiers; des métadonnées telles qu'un hachage MD5 ou un horodatage pour le temps reçu peuvent être utiles pour les gros fichiers de données.

-2
répondu Jason S 2009-04-28 17:27:47
la source

idéalement, il retournerait une réponse succès / échec.

-3
répondu cgp 2009-04-28 17:10:05
la source

tout comme un corps de requête vide est conforme à l'objectif initial d'une requête GET et un corps de réponse vide est conforme à l'objectif initial d'une requête PUT.

-3
répondu AnthonyWJones 2009-04-28 17:13:33
la source

il y a une différence entre l'en-tête et le corps D'une réponse HTTP. PUT ne doit jamais retourner un corps, mais doit retourner un code de réponse dans l'en-tête. Il suffit de choisir 200 si elle a réussi, et 4xx si pas. Il n'y a pas une telle chose comme un null code de retour. Pourquoi voulez-vous faire cela?

-3
répondu AlexanderJohannesen 2009-04-28 17:15:09
la source

Autres questions sur rest service resources put