Symulowanie odpowiedzi interfejsu API Rate-Limit
Rate-Limit nagłówki są używane w odpowiedziach HTTP w celu ograniczenia liczby żądań, które klient może wykonać w danym okresie.
Serwer wysyła te nagłówki w odpowiedzi na żądanie klienta, aby wskazać, ile żądań jest dozwolonych i ile żądań pozostaje przed osiągnięciem limitu.
Pole nagłówka RateLimit-Limit
odpowiedzi wskazuje limit przydziału żądania skojarzony z klientem w bieżącym przedziale czasu. Jeśli klient przekroczy ten limit, może nie być obsługiwany.
Niestandardowa obsługa limitu szybkości
Po przekroczeniu limitu szybkości niektóre interfejsy API używają niestandardowych zachowań, takich jak zwracanie 403 Forbidden
kodu stanu z niestandardowym komunikatem o błędzie. Serwer proxy deweloperów umożliwia symulowanie tych zachowań niestandardowych przy użyciu Custom
wartości właściwości whenLimitExceeded
.
W poniższym przykładzie pokazano, jak można skonfigurować funkcję RateLimitingPlugin w pliku devproxyrc w celu symulowania limitów szybkości dla interfejsu API usługi 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"
}
}
Zawiera customResponseFile
odpowiedź zwracaną przez serwer proxy po osiągnięciu limitu szybkości aplikacji.
{
"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"
}
}
Następne kroki
Dowiedz się więcej o obiekcie RateLimitingPlugin
.