Je suis à la croisée des chemins avec une conception d'API permettant à un client (JS dans un navigateur) de parler à un serveur. Nous utilisons HTTP 409 Conflict pour représenter l'échec d'une action en raison d'un verrou de sécurité en vigueur. Le verrou Satefy empêche les développeurs de modifier accidentellement les systèmes de production de nos clients. J'ai été chargé de gérer les 409 un peu plus gracieusement sur le client pour indiquer pourquoi un appel d'API particulier a échoué.
Ma solution a été d'envelopper les gestionnaires d'échecs de l'un de nos appels AJAX qui afficheront une notification sur le client en cas d'échec en raison de 409 - tout va bien et fonctionne bien aux côtés d'autres erreurs 4XX et 5XX qui utilisent le même mécanisme.
Un problème est survenu lorsqu'un de nos gestionnaires d'itinéraire répond par 409 lorsqu'il rencontre une erreur de logique métier - mon wrapper AJAX signale que le verrou de sécurité est activé, tandis que le gestionnaire d'échec existant du client signale ce qu'il pense (que le problème) est basé sur le corps de la réponse. Une solution simple serait de modifier la réponse du gestionnaire ou le code d'état que nous utilisons pour représenter le verrou de sécurité.
Ce qui m'amène à mon carrefour: les codes de statut HTTP devraient-ils même être utilisés pour représenter des erreurs de logique métier? Cette question aborde le même problème auquel je fais face, mais elle n'a pas gagné beaucoup de traction. Comme suggéré dans la réponse liée, je penche pour l'utilisation de HTTP 200 OK avec un corps approprié pour représenter l'échec dans la logique métier.
Quelqu'un a-t-il des opinions bien arrêtées ici? Quelqu'un peut-il me convaincre que c'est la mauvaise façon de représenter l'échec?
400 Bad Request
en tant que code HTTP global semble préférable pour couvrir les erreurs de logique métier en tant que classe.
400 Bad Request
lorsque les données sont manquantes ou ne peuvent pas être lues / analysées. C'est-à-dire que les données de demande elles-mêmes sont mauvaises d'une manière ou d'une autre.
400 Bad Request
. La raison de cette séparation est que les futurs systèmes, développeurs ou lecteurs de documents peuvent être confondus par votre déviation de la norme mondiale.