Erreurs
Quand une requête GraphQL échoue, la réponse contient une liste errors. Chaque erreur a un message, et souvent un extensions.code que vous pouvez tester dans votre code. La partie de data en échec vaut null.
Graphql
Une requête sans clé d'API :
{
"errors": [
{
"message": "Context creation failed: The authorization header is missing.",
"extensions": { "code": "UNAUTHENTICATED" }
}
]
}
Certaines erreurs sont aussi accompagnées d'un statut HTTP d'erreur : celle-ci est envoyée avec 400 Bad Request. Lisez quand même le corps JSON, il indique ce qui n'a pas fonctionné.
Une requête peut aussi réussir en partie : data contient les résultats qui ont fonctionné et errors liste le reste. Vérifiez toujours errors avant d'utiliser data.
Causes fréquentes
| Cause | Ce qu'il faut vérifier |
|---|---|
Pas de clé, ou une clé invalide (UNAUTHENTICATED) | Le header Authorization: Bearer <key>, et que la clé appartient bien à cet environnement (Environnements) |
| Un champ ou un argument inconnu | Le nom et le type du champ dans le schéma GraphQL. Le message suggère souvent le bon nom |
| Une variable utilisée mais non déclarée | Déclarez-la dans l'opération : query Name($id: ID!) { … } |
| Un argument manquant ou invalide dans une mutation | Rien n'est exécuté, et le message nomme l'argument. Vérifiez son type dans le schéma GraphQL |
| Une mutation qui enfreint une règle de l'API | Rien n'est modifié. Le message explique la règle et extensions.code donne son nom, par exemple InvalidValueIncludingTaxFailure pour un prix qui ne correspond pas à la taxe |
| Pas de réponse après 30 secondes en production | La requête est trop lourde : demandez des pages plus petites et moins de listes imbriquées (voir Environnements) |
| Une page de plus de 50 éléments ("fetching is limited to 50 edges") | Utilisez first: 50 au maximum : voir Pagination |