Je suis à la recherche de conseils sur les bonnes pratiques en matière de retour d'erreurs à partir d'une API REST. Je travaille sur une nouvelle API et je peux donc la prendre dans n'importe quelle direction pour le moment. Mon type de contenu est XML pour le moment, mais je prévois de prendre en charge JSON à l'avenir.
J'ajoute maintenant quelques cas d'erreur, comme par exemple un client qui tente d'ajouter une nouvelle ressource mais qui a dépassé son quota de stockage. Je traite déjà certains cas d'erreur avec des codes d'état HTTP (401 pour l'authentification, 403 pour l'autorisation et 404 pour les mauvaises URI de demande). J'ai examiné les codes d'erreur HTTP bénis, mais aucun de la gamme 400-417 ne semble convenir pour signaler des erreurs spécifiques à une application. Au début, j'ai été tenté de renvoyer mon erreur d'application avec 200 OK et une charge utile XML spécifique (par exemple : "Payez-nous plus et vous aurez le stockage dont vous avez besoin !") mais je me suis arrêté pour y réfléchir et cela semble trop savonneux (/ haussement d'épaules d'horreur). De plus, j'ai l'impression de diviser les réponses aux erreurs en plusieurs cas distincts, car certaines sont liées au code d'état http et d'autres au contenu.
Quelles sont les recommandations de l'industrie ? Les bonnes pratiques (expliquez pourquoi !) et aussi, du point de vue du client, quel type de traitement des erreurs dans l'API REST facilite la vie du code client ?
7 votes
Pour clarifier : je ne suis pas tant intéressé par le code d'état HTTP particulier à renvoyer, mais plutôt par la question de savoir si une bonne pratique REST consiste à combiner les erreurs de charge utile avec les codes d'état HTTP ou s'il est préférable de se fier uniquement à la charge utile.
3 votes
Le manuel de conception d'API REST couvre très bien ce sujet.
13 votes
La question ne demande pas une opinion, mais des conseils/recommandations et devrait être rouverte et utilisée comme référence. Quel était l'intérêt de fermer en 2016 la question, qui a été créée en 2009, a plus de 400 votes et aucune réponse existante basée sur des opinions.
4 votes
La plupart ne l'ont pas mentionné, mais l'utilisation des codes d'erreur HTTP peut entraîner des problèmes concernant la cause principale d'un problème. HTTP est le protocole de transport et un 404 devrait indiquer qu'il y a eu un problème avec l'URL au niveau du transport (par exemple, un mauvais chemin). Si l'application ne peut pas trouver un ensemble de données par son identifiant, il s'agit d'une erreur au niveau de l'application (et non du transport) et un 404, comme le suggèrent les utilisateurs du restful http status code, pourrait conduire à une conclusion erronée. D'une manière générale, je n'aime pas la confusion entre les couches transport et application dans l'utilisation des codes d'état.
0 votes
Voir une autre réponse sujet similaire : stackoverflow.com/a/63046962/2153237