Erreurs et traitement des erreurs

Lorsqu'une requête Cloud Firestore en mode Datastore aboutit, l'API renvoie un code d'état HTTP 200 OK, ainsi que les données demandées dans le corps de la réponse.

En cas d'échec d'une requête, l'API Cloud Datastore renvoie un code d'état HTTP 4xx ou un code de statut 5xx identifiant de manière générique l'incident, ainsi qu'une réponse fournissant des informations plus spécifiques sur les erreurs à l'origine de l'incident.

Le reste de cette page décrit la structure d'une erreur, énumère des codes d'erreur spécifiques et donne des conseils concernant leur gestion.

Voici la structure d'une réponse d'erreur pour une requête JSON :

{
  "error": {
    "code": "integer",
    "message": "string",
    "status": "string"
  }
}

L'objet de la réponse contient un seul champ error dont la valeur contient les éléments suivants :

Élément Description
code Un code d'état HTTP identifiant de manière générique l'échec de la requête.
message Des informations spécifiques au sujet de la requête.
status Le code d'erreur canonique (google.rpc.Code) pour les API Google. Les codes pouvant être renvoyés par l'API Cloud Datastore sont répertoriés dans la section Codes d'erreur.

Voici un exemple de réponse d'erreur pour une requête JSON :

{
  "error": {
    "code": 400,
    "message": "Key path is incomplete: [Person: null]",
    "status": "INVALID_ARGUMENT"
  }
}

Si une requête effectuée avec un type de contenu application/x-protobuf entraîne une erreur, elle renvoie un message google.rpc.Status sérialisé en tant que charge utile.

Codes d'erreur

La méthode recommandée pour classer les erreurs consiste à inspecter la valeur du code d'erreur canonique (google.rpc.Code). Dans les erreurs JSON, ce code apparaît dans le champ status. Dans les erreurs application/x-protobuf, il apparaît dans le champ code.

Code d'erreur canonique Description Action recommandée
ABORTED Indique que la requête entre en conflit avec une autre requête. Pour un commit non transactionnel :
Relancez la requête ou structurez vos entités afin de réduire les conflits.

Pour les requêtes faisant partie d'un commit transactionnel :
Relancez l'intégralité de la transaction ou structurez vos entités afin de réduire les conflits.
ALREADY_EXISTS Indique que la requête a tenté d'insérer une entité qui existe déjà. Ne relancez pas la requête avant d'avoir résolu le problème.
DEADLINE_EXCEEDED Un délai a été dépassé sur le serveur. Relancez la requête avec un intervalle exponentiel entre les tentatives.
FAILED_PRECONDITION Indique qu'une condition préalable à la requête n'a pas été remplie. Le champ "message" dans la réponse d'erreur fournit des informations sur la condition préalable ayant échoué. L'une des causes possibles peut être due à l'exécution d'une requête nécessitant un index pas encore défini. Ne relancez pas la requête avant d'avoir résolu le problème.
INTERNAL Le serveur a renvoyé une erreur. Ne relancez pas cette requête plus d'une fois.
INVALID_ARGUMENT Indique qu'un paramètre de requête inclut une valeur non valide. Le champ "message" dans la réponse d'erreur fournit des informations au sujet de la valeur non valide. Ne relancez pas la requête avant d'avoir résolu le problème.
NOT_FOUND Indique que la requête a tenté de mettre à jour une entité qui n'existe pas. Ne relancez pas la requête avant d'avoir résolu le problème.
PERMISSION_DENIED Indique que l'utilisateur n'était pas autorisé à effectuer la requête. Ne relancez pas la requête avant d'avoir résolu le problème.
RESOURCE_EXHAUSTED Indique que l'utilisateur a dépassé le quota pour ce projet. Ne relancez pas la requête avant d'avoir résolu le problème. Pour en savoir plus sur l'augmentation du quota pour le projet, consultez la section Tarifs et quotas.
UNAUTHENTICATED Indique que la requête ne dispose pas d'identifiants d'authentification valides. Ne relancez pas la requête avant d'avoir résolu le problème.
UNAVAILABLE Le serveur a renvoyé une erreur. Relancez la requête avec un intervalle exponentiel entre les tentatives.
Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Documentation Cloud Datastore