Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
serveurscrutari:json:messages [2011/03/20 18:00] vincent |
serveurscrutari:json:messages [2011/03/21 20:16] vincent |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Messages d'erreur ====== | ====== Messages d'erreur ====== | ||
- | En cas d'erreur de programmation (par exemple, un paramètre obligatoire manquant), le serveur renvoie un objet JSON particulier appelé « message de commande » qui comprend une clé indiquant l'erreur relevée. Un message de commande peut relever plusieurs erreurs à la fois. | + | En cas d'erreur de programmation (par exemple, un paramètre obligatoire manquant), le serveur renvoie un objet JSON particulier nommé //error// à la place de l'objet attendu. |
- | Les messages d'erreur sont réservés aux bogues du côté client, tout ce qui est susceptible de découler d'une mauvaise saisie de l'utilisateur n'est pas traitée comme erreur. Par exemple, si l'internaute envoie une séquence de recherche composée de caractères non textuels (par exemple, « "'(\ »), le serveur ne va pas envoyer de messages d'erreur mais simplement un résultat vide. En l'occurence, il renverra un objet //ficheSearchResult// avec comme //qLength = 0//. Il revient au client de traiter ce cas et de le signaler à l'internaute. | + | Les erreurs sont envoyées si le le serveur est dans l'incapacité de faire le traitement, elle sont révélatrices de bogues côté client. Une erreur ne devrait jamais avoir lieu du fait de la saisie de l'utilisateur final. Par exemple, si l'utilisateur fait une recherche sur les fiches avec une chaine composée uniquement de caractères spéciaux (« "'(\ »), il ne s'agit pas d'une erreur pour le serveur qui renverra simplement un objet //ficheSearchResult// avec //qLength = 0// (ce qui signifie que la séquence de recherche est vide), à charge pour le client d'alerter l'utilisateur final sur sa saisie incorrecte. |
- | Autrement dit, tout requête est susceptible de renvoyer deux objets différents : l'objet normalement attendu (//ficheSearchResult// dans le cas d'une recherche sur les fiches) ou //commandMessage// en cas d'erreur. Il revient au client de faire un test préalable pour savoir s'il est en présence d'une erreur ou non. | + | De la même manière, un paramètre optionnel incorrect (par exemple; //limit// qui n'a pas comme valeur un entier) ne donnera pas lieu à l'envoi d'un message d'erreur car le serveur prend alors la valeur par défaut du paramètre. Ce type d'erreur est géré par les [[serveurscrutari:json:warnings|messages d'avertissement]]. |
- | Note : en général, une erreur est envoyée que si elle a lieu sur un paramètre obligatoire. Si elle a lieu sur un paramètre optionnel (par exemple; //limit// qui n'a pas comme valeur un entier), elle est ignoré et c'est la valeur par défaut du paramètre optionnel qui est traité par le serveur. | + | Une erreur est composé de trois éléments : une clé indiquant la nature de l'erreur, le paramètre concerné par l'erreur, la valeur de paramètre éventuellement à l'origine de l'erreur |
===== Clés d'erreur ===== | ===== Clés d'erreur ===== | ||
Ligne 13: | Ligne 13: | ||
Les erreurs susceptibles d'être rencontrées sont les suivantes : | Les erreurs susceptibles d'être rencontrées sont les suivantes : | ||
- | * //missingTypeParameter// : le paramètre //type// n'est pas défini, le serveur ne peut pas comprendre quelle requête est demandée | + | * //missingParameter// : le paramètre indiqué est absent alors qu'il est obligatoire |
- | * //emptyTypeParameter// : le paramètre //type// existe mais est vide | + | * //emptyParameter// : le paramètre indiqué est présent mais vide |
- | * //wrongTypeParameter// : la valeur du paramètre type est incorrecte, cette valeur est rappelée dans la propriété //text// du message d'erreur | + | * //unknownParameterValue// : la valeur pour le paramètre indiqué est inconnue, cela arrive pour les paramètres dont les valeurs possibles sont fixées (par exemple, les paramètres //type// et //mode//) ou s'ils sont censés identifier une ressource particulière (par exemple, //q-id//) |
- | * //missingQFicheParameters// : les paramètres obligatoires //q// et //q-id// (mutellement exclusifs) sont absents dans la recherche de fiches ([[serveurscrutari:json:type_qfiche|type=q-fiche]]) | + | |
- | * //emptyQIdParameter// : paramètre //q-id// présent mais vide ([[serveurscrutari:json:type_qfiche|type=q-fiche]]) | + | |
- | * //wrongQIdParameter// : l'identifiant donné par le paramètre //q-id// est incorrect car ne correspond pas à une requête enregistrée , cette valeur est rappelée dans la propriété //text// du message d'erreur([[serveurscrutari:json:type_qfiche|type=q-fiche]]) | + | |
Ligne 25: | Ligne 23: | ||
<code javascript> | <code javascript> | ||
{ | { | ||
- | commandMessage: { | + | error: { |
- | type: 'error', //à l'heure actuelle, la valeur est toujours 'error' | + | key: … , // clé de l'erreur (chaine) |
- | key: … , // clé identifiant l'erreur (chaine) | + | parameter: … , // paramètre source de l'erreur (chaine) |
- | text: … , // texte optionnel décrivant l'erreur | + | value: … , // valeur de paramètre à l'origine de l'erreur (optionnel, chaine) |
- | array: [ // en cas d'erreur multiple, tableau avec la liste des erreurs rencontrées, optionnel | + | |
- | { // chaque erreur est objet | + | |
- | key: … , // clé identifiant l'erreur (chaine) | + | |
- | text: … , // texte optionnel décrivant l'erreur | + | |
- | }, | + | |
- | ... | + | |
- | ] | + | |
} | } | ||
+ | } | ||
</code> | </code> | ||