Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
На первый взгляд
Цель: Имитация ограничения скорости в любом API
Время: 10 минут
Подключаемые модули:RateLimitingPlugin
Предварительные требования:настройка прокси-сервера разработки
Заголовки rate-Limit используются в HTTP-ответах, чтобы ограничить количество запросов, которые клиент может сделать в течение заданного периода времени.
Сервер отправляет эти заголовки в ответ на запрос клиента, чтобы указать, сколько запросов разрешено и сколько запросов осталось до достижения ограничения.
Поле заголовка ответа RateLimit-Limit указывает квоту запросов, связанную с клиентом в текущем временном окне. Если клиент превышает это ограничение, он может не обслуживаться.
Поддержка ограничения пользовательской скорости
При превышении предела скорости некоторые API используют пользовательские поведения, например возврат 403 Forbidden кода состояния с пользовательским сообщением об ошибке. Прокси-сервер разработки позволяет имитировать эти пользовательские действия, используя значение Custom для свойства whenLimitExceeded.
В следующем примере показано, как настроить способ настройки RateLimitingPlugin в файле devproxyrc для имитации ограничений скорости для API GitHub.
Файл: devproxyrc.json (раздел конфигурации rateLimiting)
{
"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 содержит ответ, который прокси-сервер выдает, когда ваше приложение превысило лимит запросов.
Файл: github-rate-limit-exceeded.json
{
"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.
См. также
- RateLimitingPlugin — полная ссылка
- Что такое ограничение скорости — основные понятия
- Работа с ограничением частоты запросов — лучшие практики
- Глоссарий — терминология прокси для разработки