
掌握API建模:基本概念和實(shí)踐
//下面的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();
"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)。
為了達(dá)到效果,最好添加到第一個(gè),代碼如下:
var app = builder.Build();
app.UseIpRateLimiting();
最后我們來看看效果,是否能真限流。
視頻中展示了限流的效果,1分鐘內(nèi)限流10次,超過次數(shù)后會(huì)攔截訪問并給出提示。
上面展示了.NET Core Web API限流的步驟和效果,還可以設(shè)置多種限流的方式,比如全局限流等,大家可以查閱這個(gè)中間件的文檔,文檔如下:github.com/stefanprodan/AspNetCoreRateLimit/wiki/IpRateLimitMiddleware#defining-rate-limit-rules
本文講述了在.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編程大全
掌握API建模:基本概念和實(shí)踐
程序員常用的API接口管理工具有哪些?
簡(jiǎn)化API縮寫:應(yīng)用程序編程接口終極指南
如何為你的項(xiàng)目挑選最佳API?完整選擇流程解讀
應(yīng)用程序開發(fā)蓬勃發(fā)展的必備開放API
.NET Core Web APi類庫(kù)如何內(nèi)嵌運(yùn)行和.NET Core Web API 中的異常處理
.NET Core Web API + Vue By Linux and Windows 部署方案知識(shí)點(diǎn)總結(jié)
優(yōu)化利潤(rùn):計(jì)算并報(bào)告OpenAI支持的API的COGS
用于集成大型語(yǔ)言模型的LLM API
對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力
一鍵對(duì)比試用API 限時(shí)免費(fèi)