Имитация ответов API Rate-Limit
Rate-Limit заголовки используются в HTTP-ответах для ограничения количества запросов, которые клиент может выполнить в течение заданного периода времени.
Сервер отправляет эти заголовки в ответ на запрос клиента, чтобы указать, сколько запросов разрешено и сколько запросов осталось до достижения ограничения.
Поле RateLimit-Limit
заголовка ответа указывает квоту запроса, связанную с клиентом в текущем временном окне. Если клиент превышает это ограничение, он может не обслуживаться.
Поддержка пользовательских ограничений скорости
При превышении ограничения скорости некоторые API используют пользовательские варианты поведения, например возвращают 403 Forbidden
код состояния с пользовательским сообщением об ошибке. Прокси-сервер разработки позволяет имитировать эти пользовательские поведения, используя Custom
значение свойства whenLimitExceeded
.
В следующем примере показано, как настроить RateLimitingPlugin в файле devproxyrc для имитации ограничений скорости для 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"
}
}
Содержит customResponseFile
ответ, который прокси-сервер возвращает, когда ваше приложение достигнет ограничения скорости.
{
"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"
}
}
Дальнейшие действия
Дополнительные сведения о RateLimitingPlugin
.