100 votes

Peut-on créer des codes de statut HTTP personnalisés?

J'ai un peu de REPOS et de service WCF et que vous voulez envoyer un code d'état personnalisé en fonction de l'opération.

Exemple lors de la validation échoue, alors je veux envoyer HTTP 444 et lorsque l'autorisation échoue je veux envoyer HTTP 455

La question est comment nous l'avons validé pour les deux SOAP et REST web services.

Sur le client comment fonctionne le code d'erreur de loi, parce que lorsque vous envoyez un HTTP 400/500 d'un Service WCF (à l'aide de SAVON) une exception est jeter sur le client, comprenant le code d'état.

Maintenant, si je l'envoi d'un nouveau code d'état personnalisé comment le client gérer cela?

120voto

ChrisNY Points 710

Oui, tant que vous respectez la classe-qui est, 2xx pour le succès, 4xx pour l'erreur du Client, etc. Ainsi, vous pouvez retourner sur 4XX des codes d'erreur (de préférence ceux qui sont non attribuées) pour votre propre application des conditions d'erreur.

Pour citer la RFC 2616:

"Les codes d'état HTTP sont extensibles. HTTP applications ne sont pas nécessaires pour comprendre la signification de tous les inscrits des codes d'état, bien que de tels la compréhension est évidemment souhaitable. Toutefois, les applications DOIVENT comprendre la classe de code d'état, comme indiqué par le premier chiffres, et traiter les non reconnus réponse comme étant équivalent à la x00 code de statut de cette catégorie, à l'exception d'un méconnu de la réponse ne DOIT PAS être mis en cache. Par exemple, si un non reconnus du statut de code de 431 est reçue par le client, il peut présumer qu'il y a quelque chose de mal avec sa demande et traiter la réponse comme si elle avait reçu un 400 code d'état."

33voto

Julian Reschke Points 12698

Je déconseille de créer vos propres codes de statut HTTP, lorsque des codes applicables existent déjà pour les tâches que vous souhaitez effectuer dans votre exemple.

  • Échec de validation: Statut 422
  • Échec de l'autorisation: Statut 403

22voto

fmsf Points 13399

Oui, vous pouvez ajouter des codes d'erreur personnalisés. Si possible, utilisez des codes existants, et si vous en déclarez de nouveaux, veillez à éviter les collisions.

Vous devez cependant savoir que certains mandataires filtrent les codes inconnus . J'ai eu des problèmes avec les utilisateurs derrière les proxys qui mappaient 5XX à 500 et 4XX à 404. Cela a rendu mes appels ajax qui vérifiaient que le code d'état échouait.

-14voto

Aimeast Points 374

Non, vous ne pouvez utiliser que le code des exigences de la documentation RFC. Pour plus de détails, reportez-vous à la RFC1945.

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