文章目錄
ASP.NET minimal API 將多個 route pattern 套用相同處理邏輯
這個需求來自一個內部共用服務的 API 上,之前同事在建立處理邏輯時,不慎將 controller name 打錯,預計使用 Text
但打成 Test
,導致其他服務在呼叫時,都需要呼叫這個 Test
的 endpoint,這樣的命名對於呼叫端一定會存疑:這個 endpoint 是測試用的嗎?應該不是正式的吧?! 雖然有心想要破釜沈丹將 type 修正,不過強制要求已經完成介接的系統一併修改不太實際,而我也不想讓這個錯誤一直存在,所以我便在既有的 Test
endpoint 上,新增一個 Text
的 endpoint,讓呼叫端可以同時呼叫這兩個 endpoint,並且在過渡期間,逐步將呼叫端的程式碼修改過來。
近期因為內部服務對外的警示 IM 改用 Telegram 所以擔任中介角色的 API 也趁這次機會一併使用 ASP.NET minimal API 改寫,但是在改寫的過程中,卻在如何將多個 route pattern 套用相同的處理邏輯上遇到了障礙,所以今天就來紀錄一下該如何處理
基本環境說明
- macOS Sequoia 15.2 (Apple M2 Pro)
- .NET SDK 9.0.100
- JetBrains Rider 2024.3.3
將多個 route pattern 套用相同處理邏輯
將處理邏輯使用 method 來包裝
建立 handler dictionary:儲存處理邏輯
心得
相較 controller 可以直接使用 attribute 來設定 route pattern 絕對還是方便許多,但是 minimal api 透過 method 或是 handler dictionary 來儲存處理邏輯,雖然在程式碼上看來步驟與內容比較多,但是也能夠達到相同的效果。我自己是覺得對於 意圖
的呈現 attribute 還是比較直覺
完整範例程式碼可以參考 GitHub - yowko/multiple-route-text-json
參考資訊
文章作者 Yowko Tsai
上次更新 2025-01-23
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。