1. 程式人生 > >WebApi(一)【介面測試工具:WebApiTestClient】

WebApi(一)【介面測試工具: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也可以實現類似的功能,直接通過頁面上的測試按鈕,就能測試介面。

二、WebApiTestClient展示

第一印象:介面列表。
這裡寫圖片描述

點選某一個介面檢視介面詳細。例如本文檢視Get請求的無參方法,右下角有按鈕可以測試介面。
這裡寫圖片描述

點選“Test API”按鈕
這裡寫圖片描述

點選Send傳送請求

這裡寫圖片描述

第二個有引數的介面
這裡寫圖片描述
手動輸入引數,得到返回結果
這裡寫圖片描述

如果引數的型別是物件,可以直接解析class定義上面的 /// <summary>

標註,顯示如下
這裡寫圖片描述

由於是post請求,如果需要執行引數長度和型別,可以通過content-lengthcontent-type來指定。並且具體的引數可以指定不同格式顯示,比如下圖的application/jsonapplication/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路徑

其實,通過上面的步驟,我們的專案已經可以跑起來了,也可以呼叫介面測試。但是,還不能讀取 /// 註釋裡面的東西。需要做如下配置才行。
(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; }
    }

四、總結

上面簡單總結了下WebApiTestClient的使用,如果你的WebApi也是一個單獨的服務,可以整起來當幫助文件用,省得你自己寫。