Mode de décompte des requêtes
Chaque champ d’opération racine exécuté correspond à un appel API. Une requête GraphQL qui demande quatre champs racine est facturée comme quatre appels API, exactement comme si vous aviez effectué quatre requêtes REST. Les alias à la racine sont comptés séparément, car chacun déclenche une opération. Les champs imbriqués sélectionnés dans une réponse typée n’ajoutent pas d’appels API.- Les limites de votre plan actuel s’appliquent sans changement. Consultez les limites de l’API pour connaître l’allocation de votre plan.
- Demander une opération racine dont vous n’avez pas besoin coûte autant que de l’appeler via REST. Sélectionner les champs de réponse imbriqués dont vous avez besoin n’ajoute pas d’appels.
- Une requête peut être soumise à une limite de débit en cours de route. Les champs racine terminés conservent leurs données, et seuls les champs racine limités renvoient des erreurs : consultez Succès partiel.
Limites de requête
Le point de terminaison applique quelques limites à la forme et à la taille d’une query. Elles existent pour qu’une seule requête ne puisse pas consommer une part déraisonnable de notre capacité, et elles sont fixées bien au-dessus de ce qu’exige un usage ordinaire : si vous en atteignez une, c’est généralement le signe d’une query générée par accident plutôt que d’un besoin réel.
Une query rejetée renvoie HTTP 400 si vous envoyez
Accept: application/graphql-response+json, et HTTP 200 sinon, avec un tableau errors et pas de data dans les deux cas. Consultez Erreurs.
Appels API par requête
La plus importante. Une seule requête peut déclencher au maximum 5 appels API ; l’exemple ci-dessus à quatre champs racine est donc acceptable, mais pas un exemple à vingt champs racine. Une fois cinq dispatchs démarrés, les champs racine supplémentaires renvoient un 429 expliquant la limite ; les champs déjà dispatchés peuvent tout de même renvoyer leurs données. Si vous avez besoin de plus, répartissez la query sur plusieurs requêtes. Si vous le faites régulièrement pour une charge de travail légitime, contactez-nous : la limite est volontairement prudente pour le lancement et l’augmenter est simple, alors que la réduire plus tard casserait des intégrations ; c’est pourquoi elle commence bas.Profondeur, champs et alias
Ces limites sont vérifiées avant toute exécution ; en dépasser une ne vous coûte donc aucun appel API. Elles laissent également une marge confortable pour une query d’introspection complète, qui représente environ 180 champs et 12 niveaux de profondeur sans alias ; un client qui récupère l’intégralité du schéma au démarrage fonctionne donc normalement.Taille du corps de la requête
64 Ko, ce qui est généreux pour une query et bien trop petit pour un fichier. C’est pourquoi les médias ne peuvent pas être téléversés via GraphQL : consultez Téléverser des médias pour la méthode prise en charge.Délais d’expiration
Une requête dispose de 120 secondes au total. Les champs racine d’une query peuvent s’exécuter en parallèle ; sa durée dépend donc généralement de sa dépendance la plus lente. Les champs racine d’une mutation s’exécutent en série ; plusieurs mutations lentes peuvent donc s’additionner jusqu’au délai d’expiration. Dans les deux cas, une requête peut tout de même imposer au backend la charge de cinq dispatchs simultanés ou séquentiels ; répartissez les traitements connus pour être lents lorsque c’est approprié.Ce qui n’est pas limité
- La lecture du schéma. L’introspection ne nécessite pas d’authentification et n’est pas décomptée. Parcourir ce qui existe est gratuit ; exécuter une opération ne l’est pas.
- Les queries mal formées. Une query rejetée par GraphQL (champ inconnu, mauvais type, valeur d’enum invalide) n’atteint jamais notre API et n’est jamais facturée.