Plugin de Limitação de Taxa (RateLimitingPlugin)

Simula comportamentos de limite de taxa.

Captura de tela de um prompt de comando com o Dev Proxy simulando a limitação de taxa em 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 de repetição após Retry-After
costPerRequest Quantos recursos custa um pedido 2
resetTimeWindowSeconds Quanto tempo em segundos até a próxima reposição 60
warningThresholdPercent A porcentagem de uso que é excedida começa a retornar cabeçalhos de taxa limitando a resposta 80
rateLimit Número de recursos para uma janela de tempo cento e vinte
whenLimitExceeded O comportamento que o plugin 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 contendo uma resposta de erro personalizada usada quando o limite é excedido. rate-limit-response.json

Opções de linha de comando

Nenhum

Remarks

Corpo de resposta personalizado

Se definires a body propriedade no ficheiro de resposta personalizada para um objeto ou array JSON, o Dev Proxy serializa-a para JSON. Se a definires como uma cadeia, o Dev Proxy envia a cadeia as-is, sem aspas à volta. Como o Dev Proxy define o Content-Type cabeçalho para application/json, defina o Content-Type cabeçalho para corresponder ao seu conteúdo quando devolve conteúdo não JSON, por text/plainexemplo .

Cabeçalho de resposta Content-Type personalizado

Quando whenLimitExceeded está definido como Custom e a resposta personalizada tem um body mas não define um Content-Type cabeçalho, o Dev Proxy devolve a resposta com o Content-Type: application/json cabeçalho. Para devolver um tipo de conteúdo diferente, adicione o Content-Type cabeçalho ao ficheiro de resposta personalizado. O Proxy de Desenvolvimento usa o valor que especificas.

Próximo passo