web-dev-qa-db-fra.com

Code de statut HTTP pour la mise à jour et la suppression?

Quel code d'état dois-je définir pour UPDATE (PUT) et DELETE (par exemple, un produit mis à jour avec succès)?

1204
xpepermint

Pour une requête PUT: HTTP 200 ou HTTP 204 devrait impliquer "ressource mise à jour avec succès".

Pour une demande DELETE: HTTP 200 ou HTTP 204 devrait impliquer "ressource supprimée avec succès". HTTP 202 peut également être renvoyé, ce qui impliquerait que l'instruction a été acceptée par le serveur et que la "ressource a été marquée pour suppression".

PUT

Si une ressource existante est modifiée, le code de réponse 200 (OK) ou 204 (pas de contenu)> DEVRAIT être envoyé pour indiquer que la demande a été traitée avec succès.

DELETE

Une réponse réussie DEVRAIT être 200 (OK) si la réponse inclut une entité décrivant le statut, 202 (Acceptée) si l'action n'a pas encore été exécutée ou 204 (Aucun contenu) si l'action a été exécutée mais la réponse n'inclut pas. une entité.

Source: W3.org: Définitions de méthodes HTTP/1.1

HTTP 200 OK: Réponse standard pour les requêtes HTTP réussies. La réponse réelle dépendra de la méthode de requête utilisée.

HTTP 204 pas de contenu: Le serveur a traité la demande mais n'a renvoyé aucun contenu.

Source: Liste des codes d’état HTTP: 2xx Success

1869
Daniel Vassallo

Réponse courte: pour PUT et DELETE, vous devez envoyer soit 200 (OK), soit 204 (Pas de contenu).

Réponse longue: voici un diagramme de décision complet (cliquez pour agrandir).

HTTP 1.1 decision diagram

Source: https://github.com/for-GET/http-decision-diagram

799
ЯegDwight

Voici quelques conseils:

DELETE

  • 2 (si vous souhaitez envoyer des données supplémentaires dans la réponse) ou 204 (recommandé).

  • 202 L'opération supprimée n'a pas encore été validée.

  • S'il n'y a rien à supprimer, utilisez 204 ou 404 (l'opération DELETE est idempotente, supprimez un L'élément déjà supprimé est l'opération réussie , vous pouvez donc renvoyer 204, mais il est vrai que idempotent n'implique pas nécessairement la même chose. réponse)

Autres erreurs:

  • 4 Requête incorrecte (une syntaxe mal formée ou une requête incorrecte est étrange mais possible).
  • 401 Non autorisé Échec de l'authentification
  • 4 Interdit : échec de l'autorisation ou identificateur d'application non valide.
  • 405 Non autorisé . Sûr.
  • 409 Un conflit de ressources peut être possible dans des systèmes complexes.
  • Et 501, 502 en cas d'erreur.

PUT

Si vous mettez à jour un élément d'une collection

  • 200/204 avec les mêmes raisons que SUPPRIMER ci-dessus.
  • 202 si l'opération n'a pas encore été validée.

L'élément référencé n'existe pas:

  • PUT peut être 201 (si vous avez créé l'élément parce que c'est votre comportement)
  • 404 Si vous ne voulez pas créer d'éléments via PUT.

  • 4 Requête incorrecte (syntaxe mal formée ou requête erronée plus courante que dans le cas de DELETE).

  • 401 Non autorisé
  • 4 Interdit : échec d'authentification ou ID d'application non valide.
  • 405 Non autorisé . Sûr.
  • 409 Un conflit de ressources peut être possible dans des systèmes complexes, comme dans DELETE.
  • 422 Entité non traitable Il est utile de faire la distinction entre une "requête incorrecte" (par exemple, XML/JSON mal formé) et des valeurs de champ non valides.
  • Et 501, 502 en cas d'erreur.
132
Alfonso Tienda

La RFC 2616 décrit quels codes d'état utiliser .

Et non, ce n'est pas toujours 200.

13

En plus de 200 et 204, 205 (Réinitialiser le contenu) pourrait être une réponse valide.

Le serveur a répondu à la demande et l'agent d'utilisateur DEVRAIT réinitialiser la vue du document qui a provoqué l'envoi de la demande ... en effaçant le formulaire dans lequel l'entrée est donnée.

9
pje

Puisque la question se penche sur si DELETE "devrait" retourner 200 vs 204 il convient de noter que certaines personnes recommandent de renvoyer une entité avec des liens; par conséquent, la préférence est donnée à 200 .

"Au lieu de renvoyer 204 (pas de contenu), l'API devrait être utile et suggérer des endroits où aller. Dans cet exemple, je pense qu'un lien évident à fournir est" 'quelque part.com/container/' ( minus 'ressource') "- le conteneur dans lequel le client vient de supprimer une ressource. Peut-être que le client souhaite supprimer davantage de ressources, ce serait donc un lien utile."

http://blog.ploeh.dk/2013/04/30/rest-lesson-learned-avoid-204-responses/

Si un client rencontre une réponse 204, il peut abandonner, aller au point d’entrée de l’API ou revenir à la ressource précédente qu’il a visitée. Aucune option n'est particulièrement bonne.

Personnellement, je ne dirais pas que 204 est faux (ni l'auteur; il dit "ennuyeux") car une bonne mise en cache du côté du client présente de nombreux avantages. Le mieux est d'être cohérent de toute façon.

6
KCD

En juin 2014 RFC7231 obsolète le RFC2616. Si vous faites REST sur HTTP, alors RFC7231 décrit exactement le comportement attendu de GET, PUT, POST et DELETE.

3
Ivan

Voici un code d'état que vous devez connaître pour votre type de connaissance.

1XX informations réponses

  • 1 Continuer
  • 101 Protocoles de commutation
  • 102 Traitement
  • 1 Premiers conseils

2XX succès

  • 2OK
  • 201 Créé
  • 202 accepté
  • 2 Information non autorisée
  • 204 Pas de contenu
  • 205 Réinitialiser le contenu
  • 206 Contenu partiel
  • 207 Multi-Status
  • 208 déjà signalé
  • 226 MI utilisé

Redirection 3XX

  • Choix multiples
  • 1 déplacé de façon permanente
  • 2 trouvé
  • Voir autre
  • 4 Non modifié
  • 5 Utiliser un proxy
  • 6 Switch Proxy
  • 7 Redirection temporaire
  • 8 redirection permanente

Erreurs 4XX Client

  • 4 Requête incorrecte
  • 401 Non autorisé
  • 402 Paiement requis
  • 4 Interdit
  • 404 introuvable
  • 405 Méthode non autorisée
  • 406 Non acceptable
  • 407 Authentification proxy requise
  • 408 Délai d'attente de la demande
  • 409 Conflit
  • 41 Gone
  • 411 Longueur requise
  • 412 Échec de la condition préalable
  • 41 Charge utile trop grande
  • 414 URI trop long
  • 415 Type de support non pris en charge
  • 416 Intervalle non satisfaisable
  • 417 Échec de l'attente
  • 418 Je suis une théière
  • 42 Échec de la méthode
  • 421 Demande mal dirigée
  • 422 Entité non traitable
  • 42 Verrouillé
  • 424 Dépendance en échec
  • 426 Mise à niveau requise
  • 428 Condition préalable requise
  • 429 Trop de demandes
  • 431 Champs de l'en-tête de requête trop volumineux
  • 451 Non disponible pour des raisons juridiques

Erreurs 5XX Server

  • 5 Erreur interne du serveur
  • 501 Non implémenté
  • 502 Mauvaise passerelle
  • 5 Service non disponible
  • 504 délai d'attente de la passerelle
  • 505 Version Http non supportée
  • 506 Varient également négocier
  • 507 Stockage insuffisant
  • 508 Boucle détectée
  • 51 non étendu
  • 511 Authentification réseau requise
1
Prince

Protocole de transfert hypertexte (HTTP/1.1): sémantique et contenu

Expliqué brièvement! En savoir plus sur les codes d'état

0
Ahamed Rasheed