WebAPI

使用 Swashbuckle 自動建立 Web API 線上說明文件

陳志澤 2016/06/08 08:21:26
242







主題

使用 Swashbuckle 自動建立 Web API 線上說明文件

文章簡介

使用 Swashbuckle - Swagger for WebApi 自動建立 Web API 線上說明文件

作者

陳志澤

版本/產出日期

V1.0/2016.06.01




1. 前言

開發Web API服務給其他系統串接使用時,由於初期的異動性較高,因此常常會有調整個需求,如果還是以傳統的方式使用規格文件(Excel/Word)作為溝通方式,其實時效性是相當差的,而且有可能會發生規格文件與實際程式不符的情況發生。此時就可以使用 Swashbuckle 作為線上API說明文件的產生器,讓文件透過程式註解自動產出,達到文件規格與程式需求完全一致,避免上述問題及困擾發生。以下介紹。




2. 環境

本文章建立於以下版本的環境:

Visual Studio 2015

Swashbuckle v5.3.2


3. 安裝套件

簡單建立一個WebAPI專案,以及相關分層類別庫專案。


WebAPI專案使用Nuget安裝Swashbuckle套件,會連同Swashbuckle.Core一併下載


4. 文件資訊來源

線上說明文件的資訊來源可想而知一定是從註解來的,因此我們需要將XML文件檔案輸出。由於WebAPI專案 (SwaggerSample.WebAPI)中會參考使用到其他專案(SwaggerSample.Service)類別,因此也要一併輸出才會在線上 說明文件中顯示。直接右鍵點選專案選擇屬性,切換至建置頁籤後在輸出設定中勾選XML文件檔案即可。


SwaggerSample.WebAPI


SwaggerSample.Service


由於佈署網站的便利性,透過建置後事件命令集將所有XML檔案集中至App_Data資料夾中。

xcopy /y "$(TargetDir)SwaggerSample.Webapi.xml" "$(ProjectDir)App_Data\"

xcopy /y "$(TargetDir)SwaggerSample.Service.xml" "$(ProjectDir)App_Data\"


建置後確實將XML都複製到App_Data資料夾中


最後只要告訴 Swagger 所需XML檔案放置位置就可以了

先打開 App_Start \ SwaggerConfig 設定


加上2個取得XML檔案路徑的方法


最後在Register方法中設定XML檔案路徑(可允許多筆)一切就大功告成


c.IncludeXmlComments(GetXmlCommentsPath());

c.IncludeXmlComments(GetXmlServiceCommentsPath());



5. 火力展示

啟動站台後,直接在WebAPI路徑後方加上swagger就可以進入線上說明文件頁面

http://localhost:32963/swagger/


可以清楚了解此站台提供多少種API服務


以登入功能為例,點選後展開文件如下,文件上的資料都是對應到程式碼註解中。


對應代碼如下,稍微比較一下就可以知道註解相對於文件上的位置了



登入回傳結果之類別如下


另外還可以直接在頁面上直接點選Try it out」簡易測試API功能,真是方便



6. 參考資訊

Swashbuckle - Swagger for Web Api 顯示內容的調整 http://kevintsengtw.blogspot.tw/2015/12/swashbuckle-swagger-for-web-api.html

RESTful Web API Help Documentation using Swagger UI and Swashbuckle http://www.codeproject.com/Articles/1078249/RESTful-Web-API-Help-Documentation-using-Swagger-U

陳志澤