Simuler les réponses de l’API Rate-Limit
Les en-têtes Rate-Limit sont utilisés dans les réponses HTTP pour limiter le nombre de requêtes qu’un client peut effectuer au cours d’une période donnée.
Le serveur envoie ces en-têtes en réponse à la demande d’un client pour indiquer le nombre de demandes autorisées et le nombre de requêtes restant avant l’atteinte de la limite.
Le champ d’en-tête RateLimit-Limit
de réponse indique le quota de requêtes associé au client dans la fenêtre de temps actuelle. Si le client dépasse cette limite, il peut ne pas être servi.
Prise en charge de la limite de débit personnalisée
Lorsque vous dépassez la limite de débit, certaines API utilisent des comportements personnalisés, tels que le renvoi d’un 403 Forbidden
code d’état avec un message d’erreur personnalisé. Le proxy de développement vous permet de simuler ces comportements personnalisés à l’aide de la Custom
valeur de la whenLimitExceeded
propriété.
L’exemple suivant montre comment configurer la configuration de RateLimitingPlugin dans le fichier devproxyrc pour simuler des limites de débit pour l’API GitHub.
{
"rateLimiting": {
"headerLimit": "X-RateLimit-Limit",
"headerRemaining": "X-RateLimit-Remaining",
"headerReset": "X-RateLimit-Reset",
"costPerRequest": 1,
"resetTimeWindowSeconds": 3600,
"warningThresholdPercent": 0,
"rateLimit": 60,
"resetFormat": "UtcEpochSeconds",
"whenLimitExceeded": "Custom",
"customResponseFile": "github-rate-limit-exceeded.json"
}
}
Contient customResponseFile
la réponse retournée par le proxy lorsque votre application a atteint la limite de débit.
{
"statusCode": 403,
"headers": [
{
"name": "Content-Type",
"value": "application/json; charset=utf-8"
}
],
"body": {
"message": "You have exceeded a secondary rate limit and have been temporarily blocked from content creation. Please retry your request again later.",
"documentation_url": "https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits"
}
}
Étapes suivantes
Découvrez plus en détail l’RateLimitingPlugin
.