?C#進階系列——WebApi介面測試載入器:WebApiTestClient

來源:互聯網
上載者:User

標籤:views   及傳回值   屬性   格式   enc   bar   ebs   datetime   models   

閱讀目錄

  • 一、WebApiTestClient介紹
  • 二、WebApiTestClient展示
  • 三、WebApiTestClient使用
    • 1、如何引入組件
    • 2、如何使用組件
  • 四、總結

 

本文

前言:這兩天在整WebApi的服務,由於調用方是Android用戶端,Android開發人員也不懂C#文法,API裡面的介面也不能直接給他們看,沒辦法,只有整個詳細一點的文檔唄。由於介面個數有點多,每個介面都要詳細說明介面作用、參數類型、傳回值類型等等,寫著寫著把博主惹毛了,難道這種文檔非要自己寫不成?難道網上沒有這種文檔的展示工具嗎?帶著這兩個問題,在網路世界裡尋找,網路世界很奇妙,只要你用心,總能找到或多或少的協助!這不就被博主找到了這個好用的組件:WebApiTestClient。它對於介面的作用、參數作用以及類型、傳回值說明等等都能很好展現,並且提供測試調用的功能,輸入測試參數發送請求,就能得到相應的返回結果。哇塞,這一系列可視化的效果不正是博主需要的嗎,還寫什麼文檔,趕緊用起來!

 

回到頂部一、WebApiTestClient介紹

1、WebApiTestClient組件作用主要有以下幾個:

(1)、將WebApi的介面放到了瀏覽器裡面,以可視化的方式展現出來,比如我們通過http://localhost:8080/Help這個地址就能在瀏覽器裡面看到這個服務裡面所有的API介面以及介面的詳細說明,省去了我們手寫介面文檔的麻煩。

(2)、能夠詳細查看API的類說明、方法說明、參數說明、傳回值說明。只需要我們在定義方法時候加上 /// <summary> 這種詳細注釋即可,組件自動讀取注釋裡面的內容展現在介面上面。

(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定義上面的 /// <summary> 標註,顯示如下

由於是post請求,如果需要執行參數長度和類型,可以通過content-length和content-type來指定。並且具體的參數可以指定不同格式顯示,比如的application/json和application/xml

得到傳回值

回到頂部三、WebApiTestClient使用回到頂部1、如何引入組件

首先,我們需要定義一個API項目

然後通過Nuget引入組件,如。記住選中的第三個。

引入成功後,將向項目裡面添加一些主要檔案:

  • Scripts\WebApiTestClient.js
  • Areas\HelpPage\TestClient.css
  • Areas\HelpPage\Views\Help\DisplayTemplates\TestClientDialogs.cshtml
  • Areas\HelpPage\Views\Help\DisplayTemplates\TestClientReferences.cshtml
回到頂部2、如何使用組件 1、修改Api.cshtml檔案

通過上述步驟,就能將組件WebAPITestClient引入進來。下面我們只需要做一件事:開啟檔案 (根據 Areas\HelpPage\Views\Help) Api.cshtml 並添加以下內容:

  • @Html.DisplayForModel("TestClientDialogs")
  • @Html.DisplayForModel("TestClientReferences")

添加後Api.cshtml檔案的代碼如下

@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路徑

其實,通過上面的步驟,我們的項目已經可以跑起來了,也可以調用介面測試。但是,還不能讀取 /// <summary> 注釋裡面的東西。需要做如下配置才行。

(1)配置產生xml的路徑。我們在項目上面點右鍵→屬性→產生標籤頁配置xml的路徑

 

(2)在xml的讀取路徑:在的HelpPageConfig.cs裡面配置一句話,指定xml的讀取路徑。

這句代碼如下:

config.SetDocumentationProvider(new XmlDocumentationProvider(HttpContext.Current.Server.MapPath("~/App_Data/WebApiTestClient.XML")));
3、測試介面
    /// <summary>    /// 測試API Test Client    /// </summary>    public class TestChargingDataController : ApiController    {        /// <summary>        /// 得到所有資料        /// </summary>        /// <returns>返回資料</returns>        [HttpGet]        public string GetAllChargingData()        {            return "ChargingData";        }        /// <summary>        /// 得到當前Id的所有資料        /// </summary>        /// <param name="id">參數Id</param>        /// <returns>返回資料</returns>        [HttpGet]        public string GetAllChargingData(string id)        {            return "ChargingData" + id ;        }        /// <summary>        /// Post提交        /// </summary>        /// <param name="oData">對象</param>        /// <returns>提交是否成功</returns>        [HttpPost]        public bool Post(TB_CHARGING oData)        {            return true;        }        /// <summary>        /// Put請求        /// </summary>        /// <param name="oData">對象</param>        /// <returns>提交是否成功</returns>        [HttpPut]        public bool Put(TB_CHARGING oData)        {            return true;        }        /// <summary>        /// delete操作        /// </summary>        /// <param name="id">對象id</param>        /// <returns>操作是否成功</returns>        [HttpDelete]        public bool Delete(string id)        {            return true;        }    }    /// <summary>    /// 充電對象實體    /// </summary>    public class TB_CHARGING    {        /// <summary>        /// 主鍵Id        /// </summary>        public string ID { get; set; }        /// <summary>        /// 充電裝置名稱        /// </summary>        public string NAME { get; set; }        /// <summary>        /// 充電裝置描述        /// </summary>        public string DES { get; set; }        /// <summary>        /// 建立時間        /// </summary>        public DateTime CREATETIME { get; set; }    }

至此,組件就搭完了,剩下的就是運行了。我們在url裡面敲地址http://localhost:8080/Help/Index或者http://localhost:8080/Help就能得到上述效果。還不趕緊試試~~

回到頂部四、總結

上面簡單總結了下WebApiTestClient的使用,如果你的WebApi也是一個單獨的服務,可以整起來當協助文檔用,省得你自己寫。哈哈,不要謝我,請叫我紅領巾。歡迎推薦。

?C#進階系列——WebApi介面測試載入器:WebApiTestClient

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.