Statut HTTP 424 ou 500 Pour erreur sur la dépendance externe
j'essaie de créer un service qui a 2 dépendances. Une des dépendances est gérée en interne tandis que la seconde nécessite un appel http externe vers une API tierce. La séquence nécessite la mise à jour de la ressource puis l'exécution de l'appel http sortant.
donc ma question Est, en cas d'échec sur la 2e étape, Quel est le code d'état http correct pour retourner?
la réponse doit-elle être 424 ou 500 avec un corps de message expliquant erreur rencontrée?
- 424: échec de la méthode-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é provoquant la méthode entière à avorter.
- 500: Erreur De Serveur Interne.
3 réponses
l'échec que vous demandez est celui qui s'est produit dans les internes du service lui-même, donc une plage de code de statut 5xx est le bon choix. Le service 503 Non disponible semble parfait pour la situation que vous avez décrite.
5xx les codes sont pour dire au client que même si la requête était correcte, le serveur a eu une sorte de problème pour répondre à la requête. 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 c'est 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 WebDAV standard et est pour un cas où le client a besoin de changer ce qu'il fait - le serveur n'a pas de problème ici.
comme la seconde opération est un appel de service externe, vous devez choisir 502 ou 504 selon les situations.
Cité de: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.3
10.5.3 502 Bad Gateway
le serveur, tout en agissant comme passerelle ou mandataire, a reçu une réponse invalide du serveur amont auquel il a accédé en essayant de répondre à la requête.
10.5.4 503 Service Indisponible
le serveur est actuellement incapable de traiter la requête en raison d'une surcharge temporaire ou de la maintenance du serveur. Il s'ensuit qu'il s'agit d'une condition temporaire qui sera atténuée après un certain délai. Si elle est connue, la longueur du délai peut être indiquée dans un en-tête "Rety-After". S'il n'y a pas de réessai, le client devrait traiter la réponse comme s'il s'agissait d'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 passerelle Timeout
le serveur, tout en agissant en tant que passerelle ou mandataire, n'a pas reçu de réponse en temps voulu du serveur 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 compléter la requête.
Note: Note to implementors: some deployed proxies are known to
return 400 or 500 when DNS lookups time out.
503 le Service indisponible est approprié si le problème est un problème que le serveur s'attend à soulager (comme s'il obtient un 503 du serveur amont, par exemple). 502 Bad Gateway doit être utilisé pour les erreurs inconnues d'un serveur amont, où vous ne savez pas comment répondre.