.NET6之MiniAPI(七):中间件
生活随笔
收集整理的這篇文章主要介紹了
.NET6之MiniAPI(七):中间件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
http協議,是由客戶端發出請求,服務端響應結果并返回,我們把這個請求來回抽象成一個請求管道,那中間件就是這個管道上的閥門,控制著流量的進出和中斷。每一個請求都要經過中間件的過濾,濾掉不合格的請求,放行合格的請求,比如用戶驗證,只有授權的用戶通過,沒有授權的用戶擋在門外。
中間件的定義非常簡單,如下:
通過參數context來獲取信息,從而判斷是放行還是中斷,當然有的中間件始終不會中間,只是收集請求的信息,以供別用,例如監控,只是采集信息而已。
中間件一個重要特點是有順序的,有先來后到的,其實在整體請求鏈路上,中件間就像Queue里的元素,最先接到Request的中間件,最后返回Response,這種特點就要注意,當兩個或多個中間件有依賴關系時,要設定好前后順序,否則是沒有作用的。官方文檔給出了官方中間件使用順序的一些建議,希望重視。
var?builder?=?WebApplication.CreateBuilder(); var?app?=?builder.Build(); app.Use(async (context, next) => {Console.WriteLine("{0},第1個中間——前", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.FFFFFFF"));await next.Invoke();Console.WriteLine("{0},第1個中間——后", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.FFFFFFF")); }); app.Use(async (context, next) => {Console.WriteLine("{0},第2個中間——前", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.FFFFFFF"));await next.Invoke();Console.WriteLine("{0},第2個中間——后", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.FFFFFFF")); }); app.MapGet("/test",?()?=>?"ok"); app.Run();結果如下:
自定義中間件類型
ThirdMiddleware中自定義的中間件類型,這是一種約定,構造中的next是從服務容器中獲取的,代表著請求管道的傳送委托。ThirdMiddlewareExtensions是對這個類型的擴展方法。
那使用起來就比較簡單了,只需要下面這個擴展方法調用就可以了。
結果
總結
以上是生活随笔為你收集整理的.NET6之MiniAPI(七):中间件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 源代码提交SOP(Git版)
- 下一篇: Prism区域异常问题分析(导航失效?)