Compartilhar via


Simular respostas da API Rate-Limit

Os cabeçalhos Rate-Limit são usados em respostas HTTP para limitar o número de solicitações que um cliente pode fazer em um determinado período de tempo.

O servidor envia esses cabeçalhos em resposta à solicitação de um cliente para indicar quantas solicitações são permitidas e quantas solicitações permanecem antes que o limite seja atingido.

O RateLimit-Limit campo de cabeçalho de resposta indica a cota de solicitação associada ao cliente na janela de tempo atual. Se o cliente exceder esse limite, ele poderá não ser atendido.

Suporte a limite de taxa personalizado

Quando você excede o limite de taxa, algumas APIs usam comportamentos personalizados, como retornar um código de 403 Forbidden status com uma mensagem de erro personalizada. O Proxy de Desenvolvimento permite simular esses comportamentos personalizados usando o Custom valor da whenLimitExceeded propriedade.

O exemplo a seguir mostra como você pode configurar RateLimitingPlugin no arquivo devproxyrc para simular limites de taxa para a API do 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"
  }
}

O customResponseFile contém a resposta que o proxy retorna quando seu aplicativo atingiu o limite de taxa.

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

Próximas etapas

Saiba mais sobre o RateLimitingPlugin.