一直以來都是用 NSwag 來產生 OpenAPI Client & Server Code,但它所產生出來的 Client Code 會 throw Exception,這讓我在商業流程的控制需要額外付出一些心力,為了解決這問題,我會額外再墊一層,最近逛到有人分享 Refit 這個套件,它所產生出來的具名 Method 不會拋出例外,讓我可以根據 HttpStatusCode + Error Content 控制商業流程。
通過 TestContainers 產生測試所依賴的環境
- 1397
- 0
- Integration Test
- 2023-09-10
在測試時,TestContainers 它可以簡化我們產生 Container 的步驟,配置 Container 的方式也相當的簡單、明確;從同事得知 TestContainers,周末則來研究一下使用方式。
[.NET] 控制流程,不使用例外中斷流程控制的寫法
- 2007
- 0
- Error Handler
- 2023-09-09
Exception 是微軟預設中斷流程的手段,要控制好流程就要好好的處理例外,也就是寫 try catch,這會讓流程控制的程式碼看起來很凌亂。於是我需要幾個原則
- 被流程所呼叫的方法都要處理好 Exception/錯誤(根據需求場景,例如:找不到某個資料) 並回傳 Failure 物件
- 若有攔截到 Exception,Failure 物件要裝載 Exception 訊息,並且給予該例外正確的錯誤訊息。
- 盡量在最外層紀錄 Failure 日誌,例如,Controller、Application Layer
- Web API 回傳值不可以包含 Exception
以上是我的原則,在你的團隊裡面應該也有自己的錯誤處理機制;接下來,我用 ASP.NET Core Web API 實際的演練一遍
ASP.NET Core 7 幾個 Model Validation 的技巧
- 2383
- 0
- Validation
- 2023-09-01
微軟一直以來都有提供 Model Validation 讓我們更容易的進行前置條件檢查,這次我想要在 ASP.NET Core Web API 回傳一致性的錯誤結構,捨棄預設錯誤的結構,接下來我將演練 Model Validation 以及 FluentValidation 的使用方式。
Web API 通過 Morcatko.AspNetCore.JsonMergePatch 實現更新部分資源
- 396
- 0
- Json Patch
- 2023-05-11
我曾經在端點使用 Dictionary<string,object> 型別,當調用端傳入 {"name":null} 時,移除 name key;傳入 {"name":"123"} 時,name 得的值等於 "123",這樣便能夠做到類似 Json Path 的功能,參考上篇,在不改變合約的情況之下,這次我想要改用 Morcatko.AspNetCore.JsonMergePatch 來實現更新部分資源並且讓端點的合約變成強型別。
使用 Spectre.Console.Cli 解析 Console / WinForm / WPF 的參數
上篇 使用 PowerArgs 解析 Console / WinForm / WPF 的參數 介紹過怎麼通過 PowerArgs 解析參數、綁定行為,這次要用同事介紹的 Spectre.Console,他除了能解析參數轉成強型別之外還有很多華麗的功能,個人認為若是要設計 cli 它比 PowerArgs 來得容易些。
使用 Jetbrains 的 HttpClient 調用 Web API
- 869
- 0
- API Specification
- 2023-06-25
一直以來 Postman 都是我們調用 REST API 的首選,但經過了幾次專案的協作,總是覺得它的功能沒有那麼到位,於是我轉向別的解決方案 Jetbrains 的 Http Client 就是我這一次的標的
如何使用 Microsoft.FeatureManagement 實現 Feature Toggle
- 438
- 0
- Feature Toggle
- 2023-04-02
在軟體生命週期地演進的過程中,在不同的階段可能需要將某一些功能啟用或停用,這時候就可以選擇 Feature Toggle,微軟的 Microsoft.FeatureManagement 正好是選擇之一,除了基本的 Feature Toggle Flags 之外,也整合到 ASP.NET Core 的生命週期裡面,還有整合 Azure。下圖出自 針對目標受眾啟用分段推出功能 - Azure App Configuration | Microsoft Learn
使用 SpecFlow + LivingDoc’s Test Report 產生活文件/測試報表
SpecFlow + LivingDoc’s 使用起來友善度很高,測試報告的呈現也相當得清楚,甚至支援嵌入圖片、Markdown
如何在 SpecFlow Step 注入物件 / Context Dependency Injection in Specflow
當 SpecFlow 的測試步驟需要依賴其他物件時,SpecFlow 支援 Context Dependency Injection,只要在 Step 的建構函數開洞,SpecFlow 就會自動幫你注入