1
votes

Code d'état HTTP et corps de réponse dans HTTP POST pour la validation des données

Supposons d'avoir un HTTP POST qui accepte comme entrée un JSON avec quelques données et il doit valider ces données. La méthode doit également renvoyer un message de validation dans le corps de la réponse.

Ex.

{
   "A" : 1,
   "B" : 1,
   "C" : 3
}

Supposons que certaines règles de validation soient définies sur le JSON, par exemple (A + B ) doit être inférieur au paramètre C.

J'ai des doutes sur le code d'état HTTP.

  • Si le JSON est valide, HTTP POST doit renvoyer 200
  • Si le JSON n'est pas valide (paramètres manquants ou types incorrects), HTTP POST devrait renvoyer 400

Mais dans le cas où le JSON est valide (il y a tous les paramètres demandés et les types sont corrects) mais que les paramètres ne respectent pas les règles définies (A + B

  • 200 et qu'une explication dans le corps de la réponse?
  • 400 et l'explication dans le corps de la réponse?

Est-il nécessaire de différencier le statut HTTP du statut des règles de validation?

Cheers


0 commentaires

3 Réponses :


1
votes

Tout dépend du cas d'utilisation / de la fonctionnalité que vous souhaitez atteindre.

Si vous voulez faciliter le travail des autres avec des messages valides, je retournerais peut-être 2xx uniquement si le message est complètement valide, et dans tous les autres cas renvoie 4xx . Dans ce cas, l'appelant n'a pas besoin d'analyser le résultat, ce qui facilite le travail.

Si le cas d'utilisation est de fournir un service d'analyse que d'autres utiliseront pour analyser les messages, pas spécifiquement pour utiliser le message lui-même, alors je retournerais 2xx avec le résultat de l'analyse à moins que le le message ne peut pas être analysé (pas un json par exemple), auquel cas 4xx est garanti.


1 commentaires

Merci pour votre suggestion, il est également important de séparer le statut HTTP du statut Business Logic que vous implémentez.



1
votes

votre réponse doit être 400 avec le message suivant: "Mauvaise demande: les paramètres ne respectent pas les règles". Erreur 400


0 commentaires

3
votes

C'est pour cela que le code d'état 422 ("Entité non traitable") a été conçu.

Voir https://www.greenbytes.de/tech/webdav/ rfc4918.html # STATUS_422 .


0 commentaires