2010-07-28 3 views
0

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

  1. Envoyer l'erreur partie du message de la réponse telle que

    { "succès": "faux", "erreurs": [ "field1": "message1", "field2": "message2 "]}

  2. 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.

Répondre

2

Je voudrais envoyer des messages d'erreur dans le cadre de la réponse.

Ajout d'en-têtes personnalisés est ce que vous feriez si vous vouliez signaler les choses au niveau du protocole HTTP; HTTP a déjà établi des méthodes pour signaler les erreurs (via les codes d'état HTTP). Je laisserais tout ce qui va être montré au client (ou utilisé par Javascript) dans le corps de la réponse.

+0

+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. –

+0

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. –

Questions connexes