75 votes

Codes d'erreur HTTP 406 et 415

J'écris un service web qui n'accepte que du json, et ne produit que du json.

Je dois donc renvoyer le code d'état approprié si un autre format est demandé.

Il semble que j'ai deux choix :

  1. 406 - Non acceptable
  2. 415 - Unsupported Media Type

Ce serait formidable si quelqu'un pouvait m'éclairer sur la sémantique de ces deux codes.

146voto

nathan Points 3017

406 est renvoyé par le serveur lorsqu'il ne peut pas répondre sur la base de l'acceptation des en-têtes de la demande (c'est-à-dire qu'ils ont un en-tête Accept qui déclare qu'ils uniquement veulent XML).

415 est renvoyé par le serveur lorsque l'entité envoyée dans une requête (contenu d'un POST ou d'un PUT) a un mediatype non supporté (c'est-à-dire qu'ils ont envoyé du XML).

donc.. 406 quand tu ne peux pas envoyer ce qu'ils veulent, 415 quand ils envoient ce que tu ne veux pas.

J'espère que cela vous aidera !

47voto

Wrikken Points 37727
  • 406 si un Accept L'en-tête a été envoyé que vous ne pouvez pas remplir.
  • 415 si un Content-Type est envoyé, vous ne pouvez pas l'utiliser.

8voto

Piskvor Points 46986

Je cite RFC2616 :

406 Non acceptable

La ressource identifiée par la demande est seulement capable de générer des réponses qui ont un contenu caractéristiques non acceptables selon les en-têtes acceptables envoyés dans la demande.

Lorsqu'un client demande votre service, vérifiez ce qui suit Accept* qu'il a envoyé ; s'il ne correspond pas à l'en-tête application/json (ou un caractère générique, par ex. */* ), renvoyez ceci. La réponse devrait indiquer "nous ne servons que du JSON ici".

415 Unsupported Media Type

Le serveur refuse de traiter la car l'entité de la demande est dans un format non supporté par la ressource demandée pour la méthode demandée.

Je viens de revenir 415 Unsupported Media Type devrait être la réponse minimale pour "le client a envoyé quelque chose qui n'est pas JSON, on ne peut pas travailler avec ça" ; je ne suis pas sûr qu'il y ait un en-tête pour indiquer "vous devez envoyer JSON".

5voto

Victor Welling Points 1266

406 est utilisé lorsque le client demande une réponse dans un type de contenu non pris en charge (dans votre cas, tout autre type que JSON) à l'aide de l'en-tête Accept. Le code 415, quant à lui, est utilisé lorsque le client envoie des données POST ou PUT dans un type de contenu non pris en charge.

En résumé, utilisez 406 si vous ne pouvez pas produire dans le format attendu et utilisez 415 si vous ne supportez pas le format d'entrée.

Voir RFC 2616 pour leurs définitions : 406 y 415

-2voto

Cheery Points 6696

La RFC2616 vous aide !

http://www.rfc2616.com/#10.4.7

http://www.rfc2616.com/#10.4.16

Je choisirais le 415, il correspond assez bien à votre description.

Edit : Oh. IC. "l'entité du demande est dans un format non pris en charge par la ressource demandée". Donc, si vous avez une demande avec du contenu et que ce contenu n'est pas du bon type, vous devez lancer 415 -response.

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