Pular para o conteúdo principal

Postagens

Mostrando postagens com o rótulo APIs

Rate limiting em Minimal APIs com o middleware nativo do .NET

Toda API exposta na internet, mais cedo ou mais tarde, recebe um cliente que resolve chamar o mesmo endpoint mil vezes por segundo. Pode ser um bug num loop de retry, um script mal escrito ou alguém testando a sorte. Se você não tem nenhum limite, quem paga a conta é o banco, o CPU e os outros usuários. A boa notícia é que, desde o .NET 7, o rate limiting vem pronto no framework. Não precisa de pacote extra nem de biblioteca de terceiros. Neste post eu monto um exemplo pequeno com Minimal APIs, limite por IP, resposta 429 com Retry-After e testes de integração. A ideia central O middleware trabalha com dois conceitos: o limiter (o algoritmo: janela fixa, janela deslizante, token bucket ou concorrência) e a partição (quem está sendo limitado). Sem partição, o limite é global, e um cliente abusivo derruba o serviço para todo mundo. Particionando por IP, cada cliente tem o seu próprio balde. Você registra uma policy com nome e depois aplica nos endpoints que precisam. Endpoints...