Récemment, j'ai dû standardiser la communication entre le client et le serveur dans une application Web riche composée principalement de widgets. Les réponses au client sont dans un format json. Quand il était temps de décider de la gestion des messages d'erreur, deux idées ont surgi.Gestion des messages d'erreur
Envoyer l'erreur partie du message de la réponse telle que
{ "succès": "faux", "erreurs": [ "field1": "message1", "field2": "message2 "]}
Envoyez les erreurs comme en-tête et simplement return false au client
Response.AddHeader ('X-application-erreur'," [ "field1": "message1"," field2 ":" message2 "] ')
La deuxième option semble être pure; l'utilisateur ne vérifie que les erreurs dans les en-têtes quand il le souhaite, les erreurs semblent ainsi faire partie du protocole plutôt que de faire partie de la réponse.
Est-ce une bonne pratique? Est-ce qu'un moyen est meilleur que l'autre.
+1 Je suis d'accord. En outre, si vous renvoyez des messages d'erreur au client, ils doivent être dans la langue du client et ne pas révéler d'informations sensibles sur votre système (comme les chaînes de connexion DB). Ce n'est pas parce que vous attendez le code d'appel ça le sera toujours. –
Ooops - "dans la langue du client" s'applique évidemment aux messages affichés à l'utilisateur final; MAIS - cette idée s'applique également à l'échange d'informations d'erreur entre différentes couches/systèmes. –