Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
A limitação de taxa é uma técnica comum usada por provedores de API para gerenciar o número de solicitações que podem ser feitas ao seu serviço em um período de tempo específico. Os provedores de API usam limitação de taxa para garantir que seu serviço permaneça disponível e responsivo a todos os usuários, e para evitar abuso ou uso excessivo do serviço.
Quando você usa APIs de nuvem em seu aplicativo, você deve entender seus limites de taxa. As técnicas a seguir podem ajudá-lo a lidar com a limitação de taxa em seus aplicativos:
- Entenda os limites de taxa. Verifique a documentação da API que você usa para entender seus limites de taxa. Os limites de taxa podem depender do provedor de API ou do plano de serviço que você usa. Por exemplo, algumas APIs podem ter limites de taxa diferentes para planos gratuitos e pagos.
- Informações de limitação de taxa de uso. As APIs que utilizam limites de taxa normalmente comunicam os limites atuais nos cabeçalhos de resposta. Por exemplo, o
RateLimit-Remainingcabeçalho indica o número de solicitações que permanecem na janela atual. Se receber uma resposta com este cabeçalho definido como 0, sabe que atingiu o limite de taxa e deve aguardar a próxima janela antes de enviar outro pedido. O cabeçalhoRateLimit-Resetindica a hora em que o limite de taxa é redefinido. Os nomes e formatos dos cabeçalhos variam consoante a API: o GitHub, por exemplo, usax-ratelimit-remainingex-ratelimit-resetem segundos de época UTC. Algumas APIs enviam os cabeçalhos apenas depois de atingires um determinado limite. Um exemplo é quando você tem 10% das solicitações restantes. - Otimize o uso da API. Alguns serviços atribuem custos diferentes a diferentes pedidos com base na sua complexidade. Por exemplo, algumas APIs podem cobrar mais por solicitações que retornam mais dados. Para reduzir o custo do seu aplicativo, otimize o uso da API buscando apenas os dados de que você precisa. Use solicitações em lote se a API oferecer suporte a elas. Eles ajudam a reduzir o número de recursos necessários para processar a resposta e permanecer dentro dos limites de taxa.
- Implemente um limitador de taxa local. Implemente um limitador de taxa dentro do próprio aplicativo para limitar o número de solicitações que podem ser feitas à API em um período de tempo específico. Você pode fazer isso usando técnicas como os algoritmos de "token bucket" ou "leaky bucket", que permitem que o aplicativo faça muitas solicitações por período de tempo determinado. Quaisquer solicitações adicionais são enfileiradas ou descartadas.
- Evite exceder os limites tarifários. Quando ultrapassa os limites de taxa, a API limita os seus pedidos, normalmente com um código de estado HTTP
429 Too Many Requests. O throttling afeta o débito da sua aplicação mais do que a limitação de taxa. Utilize a informação nos cabeçalhos de resposta do limite de taxa para se manter dentro dos limites e evitar limitações.
Usando essas técnicas, você pode criar aplicativos que são resilientes à limitação de taxa e podem continuar a funcionar mesmo quando a API está sob carga pesada. Depois testa se isso acontece, porque raramente atinges um limite de taxa enquanto desenvolves.
Como testar a gestão do seu limite de taxa de pedidos
| Approach | O que encontra | Do que sente falta |
|---|---|---|
| Aguardar o ambiente de produção | Limites de taxa reais | Tudo, até que um utilizador lhe clique |
| Simula a API nos teus testes, ou deixa o teu agente de programação escrever o mock | Se o seu código lê os cabeçalhos que mockou | Os nomes reais dos cabeçalhos, formatações e comportamento de reset da API, e a política de retentativas do seu SDK. A tua aplicação também precisa de um switch só de teste para chegar ao mock. |
| Chama a API real até atingires o limite | Comportamento real | Não consegues atingir o limite a pedido, gastas a tua quota real e alguns limites só são reiniciados após uma hora |
| Intercete o tráfego real da sua aplicação e simule o limite | URLs reais, um limite e uma janela de tempo que escolhes, e os próprios cabeçalhos da API | O teu código isoladamente. Guarda os testes unitários para isso. |
Experimente na sua app
O Dev Proxy conta os pedidos da tua app para as APIs que escolhes, adiciona cabeçalhos de limite de taxa às respostas e responde com 429 quando a tua app ultrapassa o limite, enquanto a tua app continua a chamar os URLs reais. Escolhes o limite e a janela temporal, por isso podes atingi-lo num minuto em vez de uma hora.
Para o GitHub, descarrega a predefinição e inicia o Dev Proxy com ela:
devproxy config get github-rate-limiting
devproxy --config-file "~dataFolder/configs/github-rate-limiting/.devproxy/devproxyrc.json"
Para chamadas Microsoft Graph para OneDrive e SharePoint (/drive, /shares, /sites), use o microsoft-graph-rate-limiting preset. Para instalar Dev Proxy, consulte Configurar Dev Proxy.