Limiter les appels vers une API (api-call-limiter)
Permet de limiter le nombre total de requêtes soumises au endpoint d'une API dans une unité de temps définie. Le Call Limiter agit comme un fusible et vise à protéger le SI La Poste d’un volume de requêtes à traiter trop important. Il prend donc en compte l'ensemble des requêtes envoyées par les consommateurs sur la période définie. En cas de dépassement de capacité, Okapi renvoie une erreur 429 "Too many requests".
Cas d'usages
Cette fonctionnalité est opérationnelle en production avec l'API suivante :
- API Suivi v2
Principe de fonctionnement
L'API déclare dans son raccordement les données relatives au Call Limiter sous le namespace callLimiter
dans les données optionnelles (extra
).
Les attributs du namespace callLimiter
sont les suivants :
quotaTime
(number) : Durée de la période (en secondes)quotaCount
(number) : Nombre d'appels possibles pendant la période définie parquotaTime
Principe de mise en oeuvre
Limitation globale
- type: api
value:
name: My Api
urlContext: monapi
version: '1'
...
plugins:
- apiCallLimiter
extra:
callLimiter:
quotaTime: 86400
quotaCount: 10000
Limitation pour des IPs
- type: api
value:
name: My Api
urlContext: myapi
version: "1"
...
plugins:
- ipCallLimiter
extra:
ipCallLimiters:
- quotaTime: 86400
quotaCount: 10000
ips:
- 127.0.0.1/24 # IP au format CIDR
- quotaTime: 300
quotaCount: 10
ips:
- 172.0.0.1/24