.NET Core 8 have built-in API rate limiter functionality.
Can be used in an API project like this in program.cs:
app.UseRateLimiter();
//(PUT BELOW CODE AFTER LINE: var app = builder.Build();)
//Setup API request rate limiter
//If a rate limit is exceeded in ASP.NET Core's Rate Limiting Middleware
//HTTP response will have the status code: 429 Too Many Requests
builder.Services.AddRateLimiter(options =>
{
options.AddFixedWindowLimiter(
"default",
limiterOptions =>
{
limiterOptions.PermitLimit = 10; // Allow 10 requests
limiterOptions.Window = TimeSpan.FromSeconds(1); // Per second
limiterOptions.QueueProcessingOrder = QueueProcessingOrder.OldestFirst;
limiterOptions.QueueLimit = 2; // Allow 2 queued requests
}
);
});