原文出處: 懶得安分
前言:這兩天在整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也是一個單獨的服務,可以整起來當幫助文檔用,省得你自己寫。哈哈,不要謝我,請叫我紅領巾。