速率限制是一个用于控制特定资源在一段时间内允许的请求次数的功能。在 .NET 7 中,我们可以使用内置的速率限制器中间件来配置与速率限制相关的设置。
那为什么要限制速率呢?首先,通过限制网络流量,我们可以帮助降低服务器和网络资源使用成本。此外,通过减少发回响应的不必要延迟,还可以帮助我们提高应用程序的性能。
builder.Services.AddRateLimiter(p => p .AddFixedWindowLimiter(policyName: "FixedWindow", options => { // 堆代码 duidaima.com options.PermitLimit = 3; options.Window = TimeSpan.FromSeconds(10); }));然后,将中间件添加到 HTTP 请求管道中:
app.UseRateLimiter();现在,我们可以使用 RateLimitAttribute 特性将速率限制器应用于控制器的操作方法,如下所示:
[HttpGet(Name = "GetWeatherForecast")] [EnableRateLimiting("FixedWindow")] public IEnumerable<WeatherForecast> Get()启动应用程序并尝试使用 Swagger 发送一些请求,前三个请求将被接受,但是第四个请求将被拒绝。