Cloud Endpoints vous permet de définir des quotas pour contrôler le débit auquel les applications peuvent appeler votre API. La définition d'un quota vous permet de spécifier des limites d'utilisation afin d'éviter que les applications appelantes n'envoient un nombre excessif de requêtes à l'API. Les requêtes excessives peuvent être causées par une simple faute de frappe ou par un système mal conçu qui appelle inutilement l'API. Quelle qu'en soit la cause, il est nécessaire de bloquer le trafic provenant d'une source dès qu'il atteint un certain niveau afin de préserver l'état global de l'API. En définissant un quota, vous garantissez qu'une application donnée ne peut pas avoir d'impact négatif sur les autres applications qui utilisent l'API.
Cette page présente les fonctionnalités clés fournies par les quotas.
Les requêtes sont liées au projet client
Une fois que vous avez configuré un quota, Endpoints suit le nombre de requêtes par minute par projet Google Cloud client. Chaque application qui appelle votre API doit :
- comporter un projet Google Cloud ;
- avoir activé votre API dans son projet Google Cloud ;
- envoyer une clé API à votre API avec chaque requête. Cela permet à Endpoints d'identifier le projet Google Cloud auquel l'application appelante est associée et d'incrémenter le compteur de requêtes du projet Google Cloud.
Vous pouvez demander aux utilisateurs d'API de créer leurs propres projets dans la console Google Cloud, ou créer des projets pour eux. Comme Endpoints applique des quotas par projet, vous devez avoir un projet pour chaque utilisateur d'API.
Limiter le nombre de requêtes par minute
En définissant un quota, vous pouvez limiter le nombre de requêtes par minute envoyées à l'ensemble de votre API ou à des méthodes spécifiques. Si le code client du projet d'un utilisateur dépasse la limite que vous avez configurée, la requête est rejetée avant d'arriver dans l'API et un code d'état HTTP 429 too many
requests
est renvoyé. Les applications appelantes doivent gérer le code d'état 429
et utiliser un intervalle exponentiel entre les tentatives ou une autre logique de répétition pour réduire le débit d'appels à l'API.
Configurer un ou plusieurs quotas
Vous pouvez configurer un ou plusieurs quotas nommés et spécifier une limite de débit différente pour chaque quota. Par exemple, votre API peut utiliser des méthodes gourmandes en ressources (comme une méthode qui exécute une requête complexe et renvoie une longue liste de résultats), ainsi que d'autres méthodes rapides et légères. Dans ce cas, vous pouvez configurer deux quotas avec des limites de débit différentes, et associer les méthodes gourmandes en ressources à un quota et les méthodes légères à l'autre quota.
Configurer un coût
Lorsque vous associez une méthode à un quota, vous spécifiez toujours un coût par requête. Cela permet à différentes méthodes de consommer le même quota à des débits différents. Vous pouvez utiliser les coûts au lieu de configurer différents quotas. Par exemple, supposons que vous configuriez un quota avec une limite de 1 000 requêtes par minute. Pour les méthodes légères, vous configurez un coût de 1, ce qui signifie que les clients peuvent appeler ces méthodes 1 000 fois par minute. Pour les méthodes gourmandes en ressources, vous configurez un coût de 2, ce qui signifie que chaque fois que le client appelle la méthode, le compteur de requêtes est incrémenté de 2, jusqu'à atteindre la limite de 1 000. Cela a pour effet de limiter les méthodes gourmandes en ressources à 500 requêtes par minute.
Ignorer le quota configuré
La page Endpoints > Services affiche le quota configuré pour chaque méthode dans votre API. Si nécessaire, vous pouvez ignorer la limite configurée pour un projet client spécifique. Pour ignorer un quota, vous devez saisir le numéro du projet client sur la page Endpoints > Services. Si vous n'avez pas accès au projet client que vous souhaitez ignorer, vous devez contacter une personne ayant accès au projet pour obtenir le numéro.