.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 } ); });