前言:這兩天在整WebApi的服務,由於呼叫方是Android客戶端,Android開發人員也不懂C#語法,API裡面的介面也不能直接給他們看,沒辦法,只有整個詳細一點的文件唄。由於介面個數有點多,每個介面都要詳細說明介面作用、引數型別、返回值型別等等,寫著寫著把博主惹毛了,難道這種文件非要自己寫不成?難道網上沒有這種文件的展示工具嗎?帶著這兩個問題,在網路世界裡尋找,網路世界很奇妙,只要你用心,總能找到或多或少的幫助!這不就被博主找到了這個好用的元件:WebApiTestClient。它對於介面的作用、引數作用以及型別、返回值說明等等都能很好展現,並且提供測試呼叫的功能,輸入測試引數傳送請求,就能得到相應的返回結果。哇塞,這一系列視覺化的效果不正是博主需要的嗎,還寫什麼文件,趕緊用起來!
一、WebApiTestClient介紹
1、WebApiTestClient元件作用主要有以下幾個:
(1)、將WebApi的介面放到了瀏覽器裡面,以視覺化的方式展現出來,比如我們通過http://localhost:8080/Help這個地址就能在瀏覽器裡面看到這個服務裡面所有的API介面以及介面的詳細說明,省去了我們手寫介面文件的麻煩。
(2)、能夠詳細檢視API的類說明、方法說明、引數說明、返回值說明。只需要我們在定義方法時候加上 ///
這種詳細註釋即可,元件自動讀取註釋裡面的內容展現在介面上面。
(3)、可以修改http請求標頭檔案Head和請求體Body裡面的引數,指定傳送http請求的特性,比如指定我們最常見的contentType指示引數的型別。
(4)、元件擁有測試介面的功能,用過Soup UI的朋友應該知道,通過Soup UI能夠方便測試WebService引數以及返回值。我們的WebApiTestClient也可以實現類似的功能,直接通過頁面上的測試按鈕,就能測試介面。
2、WebApiTestClient是一個開源元件。開源地址:https://github.com/yaohuang/WebApiTestClient
二、WebApiTestClient展示
第一印象:介面列表。
點選某一個介面檢視介面詳細。例如本文檢視Get請求的無參方法,右下角有按鈕可以測試介面。
點選“Test API”按鈕
點選Send傳送請求
第二個有引數的介面
手動輸入引數,得到返回結果
如果引數的型別是物件,可以直接解析class定義上面的 ///
標註,顯示如下
由於是post請求,如果需要執行引數長度和型別,可以通過content-length和content-type來指定。並且具體的引數可以指定不同格式顯示,比如下圖的application/json和application/xml
得到返回值
三、WebApiTestClient使用
1、如何引入元件
首先,我們需要定義一個API專案
然後通過Nuget引入元件,如下圖。記住選下圖中的第三個。
引入成功後,將向專案裡面新增一些主要檔案:
- ScriptsWebApiTestClient.js
- AreasHelpPageTestClient.css
- AreasHelpPageViewsHelpDisplayTemplatesTestClientDialogs.cshtml
- AreasHelpPageViewsHelpDisplayTemplatesTestClientReferences.cshtml
2、如何使用元件
1、修改Api.cshtml檔案
通過上述步驟,就能將元件WebAPITestClient引入進來。下面我們只需要做一件事:開啟檔案 (根據 AreasHelpPageViewsHelp) Api.cshtml 並新增以下內容:
- @Html.DisplayForModel(“TestClientDialogs”)
- @Html.DisplayForModel(“TestClientReferences”)
新增後Api.cshtml檔案的程式碼如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
@using System.Web.Http @using WebApiTestClient.Areas.HelpPage.Models @model HelpPageApiModel @{ var description = Model.ApiDescription; ViewBag.Title = description.HttpMethod.Method + " " + description.RelativePath; } <link type="text/css" href="~/Areas/HelpPage/HelpPage.css" rel="stylesheet" /> <div id="body" class="help-page"> <section class="featured"> <div class="content-wrapper"> <p> @Html.ActionLink("Help Page Home", "Index") </p> </div> </section> <section class="content-wrapper main-content clear-fix"> @Html.DisplayForModel() </section> </div> @Html.DisplayForModel("TestClientDialogs") @section Scripts{ <link href="~/Areas/HelpPage/HelpPage.css" rel="stylesheet" /> @Html.DisplayForModel("TestClientReferences") } |
2、配置讀取註釋的xml路徑
其實,通過上面的步驟,我們的專案已經可以跑起來了,也可以呼叫介面測試。但是,還不能讀取 ///
註釋裡面的東西。需要做如下配置才行。
(1)配置生成xml的路徑。我們在專案上面點右鍵→屬性→生成標籤頁配置xml的路徑
(2)在xml的讀取路徑:在下圖的HelpPageConfig.cs裡面配置一句話,指定xml的讀取路徑。
這句程式碼如下:
1 |
config.SetDocumentationProvider(new XmlDocumentationProvider(HttpContext.Current.Server.MapPath("~/App_Data/WebApiTestClient.XML"))); |
3、測試介面
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
/// /// 測試API Test Client /// public class TestChargingDataController : ApiController { /// /// 得到所有資料 /// /// 返回資料 [HttpGet] public string GetAllChargingData() { return "ChargingData"; } /// /// 得到當前Id的所有資料 /// /// 引數Id /// 返回資料 [HttpGet] public string GetAllChargingData(string id) { return "ChargingData" + id ; } /// /// Post提交 /// /// 物件 /// 提交是否成功 [HttpPost] public bool Post(TB_CHARGING oData) { return true; } /// /// Put請求 /// /// 物件 /// 提交是否成功 [HttpPut] public bool Put(TB_CHARGING oData) { return true; } /// /// delete操作 /// /// 物件id /// 操作是否成功 [HttpDelete] public bool Delete(string id) { return true; } } /// /// 充電物件實體 /// public class TB_CHARGING { /// /// 主鍵Id /// public string ID { get; set; } /// /// 充電裝置名稱 /// public string NAME { get; set; } /// /// 充電裝置描述 /// public string DES { get; set; } /// /// 建立時間 /// public DateTime CREATETIME { get; set; } } |
至此,元件就搭完了,剩下的就是執行了。我們在url裡面敲地址http://localhost:8080/Help/Index或者http://localhost:8080/Help就能得到上述效果。還不趕緊試試~~
四、總結
上面簡單總結了下WebApiTestClient的使用,如果你的WebApi也是一個單獨的服務,可以整起來當幫助文件用,省得你自己寫。哈哈,不要謝我,請叫我紅領巾。
WebAPI系列文章: