Comment implémenter la limitation de débit dans Gestion des API Azure

En utilisant la limitation de débit, vous pouvez limiter le nombre d’appels d’API qu’un utilisateur ou un service peut effectuer dans une période spécifique. La limitation du débit vous permet de garantir une utilisation équitable et empêche tout utilisateur ou service unique de monopoliser les ressources de l’API. Gestion des API Azure offre un moyen pratique d’implémenter la limitation de débit pour vos API.

Pourquoi utiliser Gestion des API Azure ?

Azure Gestion des API est un service cloud puissant et polyvalent qui aide les organisations à publier des API sur des développeurs externes, partenaires et internes. Il fournit des outils pour la sécurisation, la gestion et la mise à l’échelle des appels d’API. L’une de ses fonctionnalités consiste à contrôler la limitation du débit, ce qui est utile pour maintenir l’intégrité et la fiabilité de vos API.

Configurer la limitation du débit dans Azure Gestion des API

Azure Gestion des API utilise des stratégies pour appliquer la limitation du débit. Vous pouvez définir ces stratégies à différentes étendues : global, product ou API spécifique. Cette flexibilité vous permet de personnaliser la limitation de débit en fonction des exigences et des modèles d’utilisation de votre API.

Avant de commencer à implémenter la limitation du débit, choisissez les limites de débit. Les limites que vous définissez dépendent de la capacité de votre API et du trafic attendu. Les limites courantes sont définies en tant que nombre d’appels par seconde, minute ou heure. Par exemple, vous pouvez autoriser 1 000 appels par minute par utilisateur.

Pour définir des limites de taux sur votre API dans Gestion des API Azure, utilisez les stratégies rate-limit ou rate-limit-by-key. La rate-limit stratégie définit une limite pour tous les utilisateurs. La rate-limit-by-key stratégie autorise les limites par clé identifiée (par exemple, un abonnement ou un ID d’utilisateur).

Voici un exemple de stratégie qui limite les appels à 1 000 par minute.

<policies>
  <inbound>
    <base />
    <rate-limit calls="1000" renewal-period="60" />
  </inbound>
  <backend>
    <base />
  </backend>
  <outbound>
    <base />
  </outbound>
  <on-error>
    <base />
  </on-error>
</policies>

Lorsque vous dépassez le nombre spécifié d’appels, Gestion des API Azure envoie un code d’état 429 Too Many Requests , ainsi que l’en-tête retry-after de réponse et un message qui indique quand vous pouvez réessayer.

HTTP/1.1 429 Too Many Requests
content-type: application/json
retry-after: 60
    
{
  "statusCode": 429,
  "message": "Rate limit is exceeded. Try again in 60 seconds."
}

Exposer des informations sur la limite de débit sur les en-têtes de réponse

Par défaut, Azure Gestion des API n’expose pas les informations de limite de débit sur les en-têtes de réponse. Le fait de ne pas communiquer les limites de débit empêche les applications d’éviter de les dépasser et d’être bridées. Pour exposer des informations sur la limitation du débit, étendez la stratégie rate-limit avec les propriétés remaining-calls-header-name et total-calls-header-name.

<policies>
  <inbound>
    <base />
    <rate-limit calls="1000" renewal-period="60" remaining-calls-header-name="ratelimit-remaining" total-calls-header-name="ratelimit-limit" />
  </inbound>
  <backend>
    <base />
  </backend>
  <outbound>
    <base />
  </outbound>
  <on-error>
    <base />
  </on-error>
</policies>

Lorsque vous appelez votre API maintenant, chaque réponse inclut les en-têtes ratelimit-remaining et ratelimit-limit. Les en-têtes communiquent le nombre d’appels que l’API peut gérer avant qu’elle dépasse la limite.

Résumé

L’implémentation de la limitation de débit dans Azure Gestion des API vous aide à créer des API robustes et évolutives. En utilisant la limitation de débit, vous pouvez vous assurer que votre API sert vos utilisateurs de manière fiable et efficace. La clé est de trouver le bon équilibre. Si une limite de taux est trop stricte, vous risquez d’entraver l’utilisation. Si une limite de débit est trop souple, vous risquez d'accabler votre API. Avec une planification minutieuse et une surveillance continue, vous pouvez atteindre cet équilibre et maintenir un environnement d’API sain.

Tester vos clients

Après avoir implémenté la limitation de débit sur votre API, vérifiez que les applications appelant votre API gèrent cette limitation. Lorsqu’un client dépasse une limite définie par rate-limit ou rate-limit-by-key, API Management retourne 429 Too Many Requests avec un en-tête Retry-After. Les clients qui l’ignorent continuent de réessayer et de rester soumis à une limitation de débit.

Approach Ce que vous trouvez Ce que vous avez manqué
Attendre la mise en production Comportement réel du client Chaque client défaillant, jusqu’à ce que ses utilisateurs atteignent la limite
Gestion des API simulées dans les tests du client Si la branche de nouvelle tentative du client s’exécute Vos limites réelles, en-têtes et réinitialisation du minutage, ainsi que la pile HTTP réelle du client
Appelez votre instance API Management jusqu’à ce qu’elle applique une limitation de débit Comportement réel Vous avez besoin d’une instance de test, et vous ne pouvez pas atteindre la limite sur demande sans gaspiller des appels API
Intercepter le trafic du client et simuler vos restrictions Votre limite, fenêtre et en-têtes sur l’URL de l’API réelle, et si le client attend aussi longtemps que l’indique Retry-After Le code du client pris isolément. Conservez les tests unitaires pour cela.

Dev Proxy simule le comportement de limitation de débit que vous avez configuré, avec la même limite, la fenêtre de temps et les en-têtes de réponse, tandis que l’application cliente continue d’appeler votre URL d’API réelle. Utilisez calls avec renewal-period et costPerRequest définis sur les valeurs 1 et 2 de votre stratégie, headerRemaining défini sur headerLimit (la valeur par défaut est resetTimeWindowSeconds, ce qui réduit de moitié votre limite), et rateLimit et RateLimitingPlugin définis sur les noms d’en-tête de votre stratégie. Ajoutez RetryAfterPlugin avant pour que le proxy de développement vous indique quand un client appelle à nouveau trop tôt. Pour plus d’informations, consultez Simuler les réponses de l’API de limite de débit. Pour installer Dev Proxy, consultez Configurer Dev Proxy.

Étape suivante