Como implementar a limitação de taxa no Gerenciamento de API do Azure
Usando a limitação de taxa, você pode limitar o número de chamadas de API que um usuário ou serviço pode fazer em um determinado período de tempo. A limitação de taxa ajuda a garantir o uso justo e impede que qualquer usuário ou serviço monopolize os recursos da API. O APIM (Gerenciamento de API do Azure) fornece uma maneira conveniente de implementar a limitação de taxa para suas APIs.
Por que o Gerenciamento de API do Azure?
O Gerenciamento de API do Azure é um serviço de nuvem poderoso e versátil que ajuda as organizações a publicar APIs para desenvolvedores externos, parceiros e internos. Ele fornece ferramentas para proteger, gerenciar e dimensionar chamadas de API. Um de seus recursos é controlar a limitação de taxa, o que é útil para manter a integridade e a confiabilidade de suas APIs.
Configurar a limitação de taxa no Gerenciamento de API do Azure
O Gerenciamento de API do Azure usa políticas para impor a limitação de taxa. Você pode definir essas políticas em diferentes escopos: global, produto ou específico da API. Essa flexibilidade permite que você personalize a limitação de taxa de acordo com os requisitos e padrões de uso da API.
Antes de começar a implementar a limitação de taxa, decida sobre os limites de taxa. Os limites definidos dependem da capacidade da API e do tráfego esperado. Os limites comuns são definidos como um número de chamadas por segundo, minuto ou hora. Por exemplo, você pode permitir 1000 chamadas por minuto por usuário.
Para definir limites de taxa em sua API no Gerenciamento de API do Azure, use as rate-limit
políticas ou rate-limit-by-key
. O primeiro define um limite para todos os usuários, enquanto o último permite limites por chave identificada (como uma assinatura ou um ID de usuário).
Aqui está um exemplo de uma política que limita as chamadas a 1000 por minuto.
<policies>
<inbound>
<base />
<rate-limit calls="1000" renewal-period="60" />
</inbound>
<backend>
<base />
</backend>
<outbound>
<base />
</outbound>
<on-error>
<base />
</on-error>
</policies>
Quando você excede o número especificado de chamadas, o Gerenciamento de API do Azure envia um código de status 429 Muitas Solicitações, juntamente com o cabeçalho de retry-after
resposta e uma mensagem indicando quando você pode tentar novamente.
HTTP/1.1 429 Too Many Requests
content-type: application/json
retry-after: 60
{
"statusCode": 429,
"message": "Rate limit is exceeded. Try again in 60 seconds."
}
Expor informações de limite de taxa em cabeçalhos de resposta
Por padrão, o Gerenciamento de API do Azure não expõe informações de limite de taxa em cabeçalhos de resposta. Não comunicar os limites de taxa torna difícil para os aplicativos evitar exceder o limite e serem limitados. Para expor informações de limite de taxa, estenda a rate-limit
política com as remaining-calls-header-name
propriedades e total-calls-header-name
.
<policies>
<inbound>
<base />
<rate-limit calls="1000" renewal-period="60" remaining-calls-header-name="ratelimit-remaining" total-calls-header-name="ratelimit-limit" />
</inbound>
<backend>
<base />
</backend>
<outbound>
<base />
</outbound>
<on-error>
<base />
</on-error>
</policies>
Quando você chama sua API agora, cada resposta inclui os ratelimit-remaining
cabeçalhos e ratelimit-limit
, que comunicam quantas chamadas a mais a API pode processar antes de exceder o limite.
Resumo
A implementação da limitação de taxa no Gerenciamento de API do Azure ajuda você a criar APIs robustas e escalonáveis. Ao usar a limitação de taxa, você pode garantir que sua API atenda aos usuários de maneira confiável e eficiente. Lembre-se, a chave é encontrar o equilíbrio certo – muito rigoroso e você pode prejudicar a usabilidade; muito brando e você corre o risco de sobrecarregar sua API. Com planejamento cuidadoso e monitoramento contínuo, você pode alcançar esse equilíbrio e manter um ambiente de API íntegro.