RateLimit.Throttlr
1.0.0
dotnet add package RateLimit.Throttlr --version 1.0.0
NuGet\Install-Package RateLimit.Throttlr -Version 1.0.0
<PackageReference Include="RateLimit.Throttlr" Version="1.0.0" />
<PackageVersion Include="RateLimit.Throttlr" Version="1.0.0" />
<PackageReference Include="RateLimit.Throttlr" />
paket add RateLimit.Throttlr --version 1.0.0
#r "nuget: RateLimit.Throttlr, 1.0.0"
#:package RateLimit.Throttlr@1.0.0
#addin nuget:?package=RateLimit.Throttlr&version=1.0.0
#tool nuget:?package=RateLimit.Throttlr&version=1.0.0
RateLimit.Throttlr
A flexible and customizable rate limiting library for modern and legacy .NET APIs.
Overview
RateLimit.Throttlr supports multiple rate limiting algorithms:
- Fixed Window
- Sliding Window
- Token Bucket
Installation
Install via NuGet:
dotnet add package RateLimit.Throttlr
Usage Example
Register in DI
using RateLimit.Throttlr.Core;
using RateLimit.Throttlr.Extensions;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
// Add rate limiting services
builder.Services.AddRateLimiting(
new RateLimitPolicy(
name: "global", // unique policy name
limit: 5, // max 5 requests
window: TimeSpan.FromSeconds(10) // per 10 seconds
),
limiterType: RateLimiterType.SlidingWindow // Options: FixedWindow | SlidingWindow | TokenBucket
);
Configure Middleware
app.UseRouting();
app.UseRateLimiting(); // Apply rate limiting
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
app.Run();
Example Controller
namespace DemoAPI.Controllers
{
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
[HttpGet("hello")]
public IActionResult GetHello()
{
return Ok(new
{
message = "Hello, world!",
timestamp = DateTime.UtcNow
});
}
}
}
Behavior:
Each IP (or custom partition key) can only make 5 requests per 10 seconds. Exceeding the limit returns HTTP 429 Too Many Requests. Standard headers: X-RateLimit-Limit: total allowed requests X-RateLimit-Remaining: requests left in the current window X-RateLimit-Reset: Unix timestamp when window resets Retry-After: seconds to wait before next allowed request
Supported Algorithms
Limiter Type Description FixedWindow Counts requests per fixed window interval SlidingWindow Smooths counts using weighted previous window TokenBucket Allows bursts and steady refill rate
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
.NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.1 is compatible. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- Microsoft.AspNetCore.Http.Abstractions (>= 2.3.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 9.0.8)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last Updated |
---|---|---|
1.0.0 | 187 | 8/30/2025 |
Release Notes — RateLimit.Throttlr
Version: 1.0.0
Release Date: 2025-08-30
Overview
RateLimit.Throttlr is a flexible and customizable rate limiting library for modern and legacy .NET APIs. This release introduces core functionality for controlling API request rates using multiple algorithms, with easy integration into ASP.NET Core projects.
Features
Flexible rate limiting algorithms
Fixed Window
Sliding Window
Token Bucket
Customizable policies
Set maximum requests per interval
Define time windows
Support for custom partition keys (e.g., IP address)
Middleware integration
Easy registration via ASP.NET Core DI
Automatic HTTP 429 response when limits are exceeded
Standard headers
X-RateLimit-Limit – allowed requests
X-RateLimit-Remaining – remaining requests in the current window
X-RateLimit-Reset – window reset timestamp
Retry-After – seconds before next allowed request