NSwagStudio 使用紀錄

為工作紀錄。Swagger, NSwagStudio

引言

延伸自此文章。

NSwagStudio 工具程式(進階)

  • 可生成最新版且最完整的 Swagger client code。

  • 缺點是全手工作業。

  • 若要設定後可直接自動更新就要用 Unchase OpenAPI (Swagger) Connected Service VS2022 延伸模組,其設定參數與 NSwagStudio 一模一樣。

設定紀錄

NSwagStudio 的設定項目與 Unchase OpenAPI (Swagger) Connected Service 是一樣的所以改看它的設定也是一樣的,要注意的只有依循版本可能落後一些

NSwagStudio 設定畫面

Unchase OpenAPI (Swagger) Connected Service的設定紀錄

新建 SwagClient 設定程序請參考官網說明Unchase OpenAPI (Swagger) Connected Service VS2022。下面是設定好後的畫面。

在『Connected Services』可以【更新 Unchase OpenAPI (Swaggger) Connected Service】這樣後端API規格變了可以很方便的自動更新,若用 NSwagStudio 就要全手工了。

進入『Specification Endpoint』後首先要注意版號,在經驗上版號不同輸出可能有所差異。

Service nameGenerated file name 不指定的就給預設值 OpenAPIService 與 OpenAPI。

之後設定 Generate CSharp Client 的產生 Swagger client code。

也可以 Generate TypeScript Client 給 JavaScript / React 等等使用。或 Generate CSharp Controller 給 Web API 去介接其他人的 Swagger API。

之後會出現『CSharp Client Settings』設定畫面。設定欄位很多只會說明有用到的部份,各段落可點 Show 顯示 Hide 隱藏。

在『Main Settings』段落:

Namespace 建議設個好名稱。 Additional Namespace Usages 一般不用指定。此案例的 DTO 是用自己準備的所以指定到 DTO namespace。 Generate exception classes 一般留用預設值就好,若不生成就要自己準備。

在『Client』段落:

Generate Client Classes 是一定要勾選的。 Operation Generation Mode 設成"MultipleClientsFromFirstTagAndPathSegments"。預設生成單一檔案這一般是不夠用的。 Class Name 預設值 "{controller}Client" 本人改成 "{controller}Api"。

在『Client』段落後的子段落:

Parameter types\Generic Array Type 建議設成"System.Collections.Generic.List"。預設值"System.Collections.Generic.IEnumerable"為抽象類別不易使用。 Response types\Generic Array Type 建議設成"System.Collections.Generic.List"。預設值"System.Collections.Generic.ICollection"為抽象類別不易使用。

到了『DTO classes』段落,一般都會勾選 Generate DTO Types 項目。但因為本案例用自己準備的 DTO 就不勾選了。

若勾選了 Generate DTO Types 那其後的子段落:

Primitive Types\Date Type 建議設成 "System.DateTime" 以省去轉換操作。預設值"System.DateTimeOffset"。 erimitive Types\Date Time Type 建議設成 "System.DateTime" 以省去轉換操作。預設值"System.DateTimeOffset" 以省去轉換操作。

(EOF)

Last updated