88 votes

Statut HTTP 424 ou 500 pour une erreur sur une dépendance externe

J'essaie de créer un service qui a 2 dépendances. L'une des dépendances est gérée en interne tandis que la seconde nécessite un appel sortant http externe vers une API tierce. La séquence nécessite la mise à jour de la ressource puis l'exécution de l'appel sortant http.

Ma question est donc la suivante : en cas d'échec de la deuxième étape, quel est le code d'état http correct à renvoyer ?

La réponse doit-elle être 424 ou 500 avec un corps de message expliquant l'erreur rencontrée ?

  • 424 : Method Failure - Indique que la méthode n'a pas été exécutée sur une ressource particulière dans son champ d'application parce qu'une partie de l'exécution de la méthode a échoué, entraînant l'abandon de la méthode entière.
  • 500 : Internal Server Error.

86voto

Andrew Herbert Points 641

L'échec que vous demandez est celui qui s'est produit dans les internes du service lui-même, donc une gamme de code d'état 5xx est le choix correct. 503 Service indisponible semble parfait pour la situation que vous avez décrite.

Les codes 5xx servent à indiquer au client que, même si la demande était correcte, le serveur a rencontré un problème pour y répondre. D'autre part, les codes 4xx sont utilisés pour dire au client qu'il a fait quelque chose de mal (et que le serveur va très bien, merci). Sections 10.4 et 10.5 de la spécification HTTP 1.1. expliquer les différents objectifs des codes 4xx et 5xx.

Le code d'état 424 est défini dans le Norme WebDAV et est destiné à un cas où le client doit changer ce qu'il fait - le serveur ne rencontre aucun problème ici.

47voto

mustafaturan Points 397

Comme la deuxième opération est un appel de service externe, vous devez choisir 502 ou 504 selon les situations.

Cité par : http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.3

10.5.3 502 Mauvaise passerelle

Le serveur, qui fait office de passerelle ou de proxy, a reçu une réponse non valide du serveur en amont auquel il a accédé pour tenter de répondre à la demande.

10.5.4 503 Service indisponible

Le serveur est actuellement incapable de traiter la demande en raison d'une surcharge temporaire ou de la maintenance du serveur. L'implication est qu'il s'agit d'une condition temporaire qui sera allégée après un certain délai. Si elle est connue, la durée du délai peut être indiquée dans un en-tête Retry-After. Si aucun Retry-After n'est donné, le client DEVRAIT traiter la réponse comme il le ferait pour une réponse 500.

  Note: The existence of the 503 status code does not imply that a
  server must use it when becoming overloaded. Some servers may wish
  to simply refuse the connection.

10.5.5 504 Délai d'attente de la passerelle

Le serveur, qui fait office de passerelle ou de proxy, n'a pas reçu de réponse en temps voulu du serveur en amont spécifié par l'URI (par exemple HTTP, FTP, LDAP) ou d'un autre serveur auxiliaire (par exemple DNS) auquel il devait accéder pour tenter de répondre à la demande.

  Note: Note to implementors: some deployed proxies are known to
  return 400 or 500 when DNS lookups time out.

16voto

coppro Points 10692

503 Service Unavailable est approprié si le serveur s'attend à ce que le problème soit résolu (comme s'il reçoit un 503 du serveur en amont, par exemple). 502 Bad Gateway doit être utilisé pour les erreurs inconnues provenant d'un serveur en amont, pour lesquelles vous ne savez pas comment réagir.

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