如何使用 Mock Server 建立假服務

上篇 提到使用 Prism 來建立 Mock Server,經同事反饋,他期望能使用類似像 Wiremock 有 API 可以在測試步驟根據場景快速的定義 Mock Server 的回傳值,而我期望除了用 API 動態的決定 Mock Server 的回傳值之外,還能匯入 Open API/Swagger,於是我把我手上收集的 Mock Server 清單玩了一遍,發現這一套 Mock Server 可以滿足我需要的

...繼續閱讀 »

通過 Refitter CLI,從 Swagger / OpenAPI Specification 檔案,產生 Refit Interfaces Client

一直以來都是用 NSwag 來產生 OpenAPI Client & Server Code,但它所產生出來的 Client Code 會 throw Exception,這讓我在商業流程的控制需要額外付出一些心力,為了解決這問題,我會額外再墊一層,最近逛到有人分享 Refit 這個套件,它所產生出來的具名 Method 不會拋出例外,讓我可以根據 HttpStatusCode + Error Content 控制商業流程。

...繼續閱讀 »

如何使用 Swagger/OpenAPI Specification + Prism 建立基於合約的 Mock Server

在介接其他人寫的 Web API 時,可以透過 Mock Server 來模擬對方會回傳的資料,比如說 json-server,但這樣往往會因為兩造之間沒有一個合約、規範,各自實作,導致最後在整合的時落差太大;理論上,雙方基於合約、規範,進行開發,最後在整合的時候應該有問題的狀況應該會小一點,Prism 是套基於 Swagger/OpenAPI Specification 的 Mock Server,在 OpenAPI 的生態系裡面算是蠻完整的解決方案之一,接下來,是我對它在使用上的小小心得。

...繼續閱讀 »

如何使用 Swagger / OpenAPI Specification 先行的開發流程

以往,在 ASP.NET Fx / ASP.NET Core 我會先寫好 Controller(Server Code) 再搭配 NSwag、Swashbuckle.AspCore 產生 Swagger / OpenAPI Specification Doc,一旦要修改它(Spec.)就必須要重新編譯專案,只是要改文件的錯字,也沒有動到 Server Code 的邏輯,卻要重新 Build Server,幾次下來發現這樣似乎不是很聰明。也常常發生過於關注 Server Code 忽略 Specification ,導致兩邊跟不一致。

現在,我先寫 Specification,然後再透過它產生 Controller (Server Code) 讓 Specification 不再強制依賴 Server Code,解除強依賴關係,編寫規範時再也不需要重新建置專案,目前運作起來挺順暢的,接下來,我分享我是怎麼做的

...繼續閱讀 »

[ASP.NET Core 6] 讓你的 ASP.NET Core Web API + Swashbuckle.AspNetCore 支援多個版本

一旦 Web API 部署並開始使用後,它應該是可靠的,並且不應該因任何原因而中斷。另一方面,隨著需求的變化,我們需要更新 Web API 代碼,但這應該不破壞目前 API 的情況下完成,因此新舊版本的 Web  API 都將處於活動狀態,功能也要正常。這時候就要靠 Web  API 版本控制,我們靠它用於處理不同版本的Web  API。微軟的   Microsoft.AspNetCore.Mvc.Versioning 可以讓我們輕易的完成此項目,但我在整合到 Swagger UI / Swashbuckle.AspNetCore 的時候碰到了一些關卡,所幸順利的解決了,以下是我的實作筆記。

 

...繼續閱讀 »