Skip to content

Latest commit

 

History

History
41 lines (38 loc) · 893 Bytes

RateLimiting.md

File metadata and controls

41 lines (38 loc) · 893 Bytes

Rate Limiting

Program.cs

builder.Services.AddRateLimiter(options =>
{
    options.AddFixedWindowLimiter("Api", options =>
    {
        options.AutoReplenishment = true;
        options.PermitLimit = 10;
        options.Window = TimeSpan.FromMinutes(1);
    });

    options.AddFixedWindowLimiter("Web", options =>
    {
        options.AutoReplenishment = true;
        options.PermitLimit = 20;
        options.Window = TimeSpan.FromMinutes(1);
    });
});
app.UseRateLimiter();

Controller

public class ProductsController : AbstractController
{
    public ProductsController(IMediator mediator) : base(mediator)
    {
    }

    [HttpGet]
    [EnableRateLimiting("Api")]
    public async Task<IActionResult>GetProducts()
    {
        var result = await _mediator.Send(new GetProductsRequest());
        return Ok(result.Datas);
    }
}