iT邦幫忙

2025 iThome 鐵人賽

DAY 21
0
自我挑戰組

打造自己的Medium系列 第 21

Day21 Middleware

  • 分享至 

  • xImage
  •  

前面的教學已經有用到Middleware,但一直沒有補充細節

中介軟體

舉現實的例子來說,有點像去機場搭飛機,會先:

  1. 機場門口
  2. 過安檢
  3. 過護照檢查
  4. 前往登機口
  5. 空服員檢查機票,才搭上飛機

中介軟體就是像這樣層層把關的檢核點,而乘客就是互相傳遞的訊息,可以在前面過濾掉不歡迎的訪問

假設有三個中介軟體,那完整且沒有被中斷過程,從請求到回應,會像這樣:

請求-> Middleware 1-> Middleware 2-> Middleware 3 -> Middleware 2 -> Middleware 1->回應

那這邊可以注意到中介軟體的順序,就是處理訊息的順序,因此官方有推薦順序的安排

順序範例

這些系統內建的功能,會自己呼叫next,去把訊息傳遞下去

// 強制使用安全的 HTTPS
app.UseHttpsRedirection();    
app.UseStaticFiles();         
// app.UseCookiePolicy();     
// 用來解析 URL 路由資訊
app.UseRouting();             
// app.UseRateLimiter();      
// app.UseRequestLocalization(); 
// 處理跨域存取限制
// app.UseCors();             
// 認證:你是誰
app.UseAuthentication();      
// 授權:你能不能做這件事
app.UseAuthorization();       
// app.UseSession();          
// app.UseResponseCompression(); 
// app.UseResponseCaching();  

app.MapRazorPages();          
app.MapDefaultControllerRoute(); 

寫法

藉由next.Invoke()把訊息傳遞下去,那前面範例內建的功能,已經先寫好這個行為,所以看不到這行指令

app.Use(async (context, next) =>
{
    // Do work that can write to the Response.
    await next.Invoke();
    // Do logging or other work that doesn't write to the Response.
});

參考資料

ASP.NET Core Middleware

作者的哈拉

不知不覺已經到21天了,我覺得最大的收穫應該是,找回瞬間收心的專注力吧


上一篇
Day20 LINQ
下一篇
Day22 雜談
系列文
打造自己的Medium30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言