Quel devrait être le code de réponse lors de la validation des erreurs se produisent?
-
27-09-2019 - |
Question
Je suis mise en œuvre d'une API. L'API accepte / retourne le type de contenu JSON. Maintenant, supposons que les données soumises par une requête POST ne sont pas valides, comme un attribut manquant ou une duplication existe pour les mêmes données. Quel est le code de réponse standard HTML dans ce cas?
La solution
Il y a deux réponses:
Si vous avez soumis un formulaire, il suffit de retourner 200 - OK
avec HTML expliquant pourquoi l'objet n'a pas été créé.
Si vous avez une API, vous devez utiliser les éléments suivants
200 OK
- Lorsque la demande était OK et renvoyé les données appropriées.
201 CRÉÉ
- L'appel a réussi et le nouvel objet créé.
400 BAD DEMANDE
- URI demande non valide
- non valide en-tête HTTP
- Réception d'un non pris en charge, paramètre non standard
- Réception d'un message HTTP non valide du corps
401 Unauthorized
- problèmes d'autorisation. Par exemple. mauvaise clé API, etc.
403 INTERDIT
- correctement autorisé, mais pas le droit.
404 INTROUVABLE
- La ressource n'existe pas (par exemple sur Lire ou mise à jour)
405 MÉTHODE INTERDITE
- Utilisation dans des situations d'une méthode REST donnée n'est pas autorisé. Par exemple. POST sur une seule ressource, ou SUPPRIMER sur la collection de ressources.
409 CONFLIT
- Lorsqu'une mise à jour échoue, envoyer « conflit » pour permettre au côté client pour résoudre le conflit eux-mêmes et nouvelle tentative.
500 Erreur interne du serveur
- Erreur interne. Ceci est le code par défaut qui est utilisé pour toutes les erreurs non reconnues.
501 PAS MIS EN ŒUVRE
- Utiliser pour attendre, mais pas encore les caractéristiques mises en œuvre.
Autres conseils
Les mensonges d'erreur sur le côté client, de sorte que vous souhaitez utiliser un 400 - Bad Request :
La demande n'a pas pu être compris par le serveur en raison d'une syntaxe incorrecte. Le client ne doit pas répéter la demande sans modifications.
Le plus proche que je peux trouver serait 400 Bad Request
.
Comme Ariejan dit que vous devez baser votre API dans les codes HTTP déjà définis. Si vous voulez envoyer un message d'erreur la meilleure façon devrait être pas utiliser le message HTTP, mais il vaut mieux inclure le message dans le corps de la réponse, JSON formaté.
422 inexploitables Entité (voir RFC 4918, Section 11.2 )