Имитация ответов 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.