Плагин для ограничения скорости

Имитирует поведение ограничения скорости.

снимок экрана командной строки с ограничением скорости использования прокси-сервера разработки для API GitHub.

Пример конфигурации

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rc.schema.json",
  "plugins": [
    {
      "name": "RateLimitingPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "rateLimiting"
    }
  ],
  "rateLimiting": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/ratelimitingplugin.schema.json",
    "costPerRequest": 2,
    "rateLimit": 120
  }
}

Свойства конфигурации

Свойство Описание По умолчанию
headerLimit Имя заголовка ответа, который передает ограничение скорости. RateLimit-Limit
headerRemaining Имя заголовка ответа, который передает оставшееся количество ресурсов перед сбросом RateLimit-Remaining
headerReset Имя заголовка ответа, который сообщает время, оставшееся до сброса RateLimit-Reset
headerRetryAfter Имя заголовка ответа, который сообщает о повторных попытках после периода Retry-After
costPerRequest Сколько ресурсов выполняет затраты на запрос 2
resetTimeWindowSeconds Как долго в секундах до следующего сброса шестьдесят
warningThresholdPercent Процент использования, который при превышении начинает возвращать ограничения скорости, ограничивающие заголовки ответов 80
rateLimit Количество ресурсов для периода времени 120
whenLimitExceeded Поведение подключаемого модуля должно использоваться при превышении предела. Используйте Throttle или Custom. Throttle
resetFormat Формат, используемый для определения времени сброса ограничения скорости. Используйте SecondsLeft или UtcEpochSeconds. SecondsLeft
customResponseFile Файл, содержащий пользовательский ответ на ошибку, используемый при превышении предела. rate-limit-response.json

Параметры командной строки

Никакой

Замечания

Текст пользовательского ответа

Если для свойства в пользовательском файле ответа задано body значение JSON-объекта или массива, прокси-сервер разработки сериализует его в JSON. Если он задан в строке, прокси-сервер разработки отправляет строку as-isбез окружающих кавычек. Так как прокси-сервер разработки по умолчанию использует Content-Type заголовок, задайте Content-Type для заголовка application/jsonсоответствующее содержимое при возврате содержимого, отличного от JSON, напримерtext/plain.

Пользовательский заголовок ответа Content-Type

Если whenLimitExceeded задано Custom значение и пользовательский ответ имеет body заголовок, но не определяет Content-Type заголовок, прокси-сервер разработки возвращает ответ с заголовком Content-Type: application/json . Чтобы вернуть другой тип контента, добавьте Content-Type заголовок в пользовательский файл ответа. В прокси-сервере разработки используется указанное значение.

Следующий шаг