Plug-in de limitação de taxa

Simula comportamentos de limite de taxa.

Captura de tela de um prompt de comando com o Proxy de Desenvolvimento simulando a limitação de taxa nas APIs do GitHub.

Exemplo de configuração

{
  "$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
  }
}

Propriedades de configuração

Propriedade Descrição Inadimplência
headerLimit Nome do cabeçalho de resposta que comunica o limite de limitação de taxa RateLimit-Limit
headerRemaining Nome do cabeçalho de resposta que comunica o número restante de recursos antes da redefinição RateLimit-Remaining
headerReset Nome do cabeçalho de resposta que comunica o tempo restante até a redefinição RateLimit-Reset
headerRetryAfter Nome do cabeçalho de resposta que comunica o período após a repetição Retry-After
costPerRequest Quantos recursos custam uma solicitação 2
resetTimeWindowSeconds Quanto tempo em segundos até a próxima redefinição 60
warningThresholdPercent O percentual de uso que é quando excedido começa a retornar cabeçalhos de resposta de limitação de taxa 80
rateLimit Número de recursos para uma janela de tempo 120
whenLimitExceeded O comportamento que o plug-in deve usar quando o limite é excedido. Use Throttle ou Custom. Throttle
resetFormat O formato usado para determinar quando o limite de taxa é redefinido. Use SecondsLeft ou UtcEpochSeconds. SecondsLeft
customResponseFile Arquivo que contém uma resposta de erro personalizada usada quando o limite é excedido. rate-limit-response.json

Opções de linha de comando

Nenhum

Comentários

Corpo da resposta personalizada

Se você definir a body propriedade no arquivo de resposta personalizado para um objeto JSON ou matriz, o Proxy de Desenvolvimento a serializará para JSON. Se você defini-la como uma cadeia de caracteres, o Proxy de Desenvolvimento enviará a cadeia de caracteres as-is, sem aspas ao redor. Como o Proxy de Desenvolvimento usa o Content-Type cabeçalho como application/jsonpadrão, defina o Content-Type cabeçalho para corresponder ao conteúdo quando você retornar conteúdo não JSON, por exemplo text/plain.

Cabeçalho de resposta Content-Type personalizado

Quando whenLimitExceeded é definido Custom como e a resposta personalizada tem um body cabeçalho, mas não define um Content-Type cabeçalho, o Proxy de Desenvolvimento retorna a resposta com o Content-Type: application/json cabeçalho. Para retornar um tipo de conteúdo diferente, adicione o Content-Type cabeçalho ao arquivo de resposta personalizado. O Proxy de Desenvolvimento usa o valor especificado.

Próxima etapa