//下面的IpRateLimiting為限流策略的配置文件結(jié)點(diǎn)名稱,可以配置多個(gè)策略
builder.Services.Configure<IpRateLimitOptions>(builder.Configuration.GetSection("IpRateLimiting"));
//添加對(duì)內(nèi)存中的 IP 策略存儲(chǔ)的支持
builder.Services.AddSingleton<IIpPolicyStore, MemoryCacheIpPolicyStore>();
builder.Services.AddSingleton<IRateLimitCounterStore, MemoryCacheRateLimitCounterStore>();
builder.Services.AddSingleton<IRateLimitConfiguration, RateLimitConfiguration>();
builder.Services.AddInMemoryRateLimiting();

3) 在 appsettings.json文件中添加規(guī)則,規(guī)則如下:

 "IpRateLimiting": {
"EnableEndpointRateLimiting": true,
"StackBlockedRequests": false,
"RealIpHeader": "X-Real-IP",
"ClientIdHeader": "X-ClientId",
"HttpStatusCode": 429,
"IpWhitelist": [],
"EndpointWhitelist": [],
"GeneralRules": [
{
"Endpoint": "GET:/WeatherForecast",
"Period": "1m",
"Limit": 10
}
]
}
//歡迎關(guān)注公眾號(hào)DOTNET開發(fā)跳槽,領(lǐng)取面試題
//加微信號(hào)xbhpnet入群交流技術(shù)和跳槽經(jīng)驗(yàn).

上面的節(jié)點(diǎn)名稱是配置中間件時(shí)節(jié)點(diǎn)名稱,規(guī)則GeneralRules的節(jié)點(diǎn)下,意思是限制/WeatherForecast的鏈接,每分鐘最大請(qǐng)求次數(shù)為10次。如果達(dá)到限制次數(shù),將對(duì)客戶端返回429。具體規(guī)則可以看官網(wǎng)。

4)添加中間件

為了達(dá)到效果,最好添加到第一個(gè),代碼如下:

var app = builder.Build();
app.UseIpRateLimiting();

5)效果如下

最后我們來看看效果,是否能真限流。

視頻中展示了限流的效果,1分鐘內(nèi)限流10次,超過次數(shù)后會(huì)攔截訪問并給出提示。

上面展示了.NET Core Web API限流的步驟和效果,還可以設(shè)置多種限流的方式,比如全局限流等,大家可以查閱這個(gè)中間件的文檔,文檔如下:github.com/stefanprodan/AspNetCoreRateLimit/wiki/IpRateLimitMiddleware#defining-rate-limit-rules

結(jié)語(yǔ)

本文講述了在.NET Core Web API中實(shí)現(xiàn)限流,以及限流的方式和概念。限流盡管有很多優(yōu)點(diǎn),但是對(duì)于某些項(xiàng)目,缺點(diǎn)也是顯而易見的,限流增加了開發(fā)和維護(hù)的復(fù)雜程度、某些情況下會(huì)降低用戶的體驗(yàn)度、由于需要檢查訪問次數(shù),可能會(huì)影響API站點(diǎn)的性能等。希望本文對(duì)你有所收獲,歡迎留言討論或者吐槽本文。同時(shí)歡迎關(guān)注“dotnet開發(fā)跳槽”公眾號(hào)的其它文章。

本文章轉(zhuǎn)載微信公眾號(hào)@CSharp編程大全

上一篇:

通過Flask框架創(chuàng)建靈活的、可擴(kuò)展的Web Restful API服務(wù)

下一篇:

如何通過 API 將大模型集成到自己的應(yīng)用程序中
#你可能也喜歡這些API文章!

我們有何不同?

API服務(wù)商零注冊(cè)

多API并行試用

數(shù)據(jù)驅(qū)動(dòng)選型,提升決策效率

查看全部API→
??

熱門場(chǎng)景實(shí)測(cè),選對(duì)API

#AI文本生成大模型API

對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力

25個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)

#AI深度推理大模型API

對(duì)比大模型API的邏輯推理準(zhǔn)確性、分析深度、可視化建議合理性

10個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)