C#進階系列——WebApi 介面測試工具:WebApiTestClient

来源:https://www.cnblogs.com/yinjun98/archive/2019/07/24/11239685.html
-Advertisement-
Play Games

C#進階系列——WebApi 介面測試工具:WebApiTestClient 一、WebApiTestClient介紹 1、WebApiTestClient組件作用主要有以下幾個: (1)、將WebApi的介面放到了瀏覽器裡面,以可視化的方式展現出來,比如我們通過http://localhost:8 ...


C#進階系列——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也可以實現類似的功能,直接通過頁面上的測試按鈕,就能測試介面。

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就能得到上述效果。還不趕緊試試~~


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • pymysql是Python操作mysql的最主要方法,本文詳細介紹pymysql的建庫、建表和增刪改查操作。 ...
  • 在做SSM項目時發現一個有趣的bug,在這裡記錄一下。 資料庫表如下: 實體類:grade欄位初始設定為int類型 在用mybatis對第三條數據進行修改時,希望賦值的更改,未賦值的不更改,測試運行 修改後發現資料庫中的grade欄位變成了0,這不是我想要的,(按照正常需求應該是原來的數字5) 查看 ...
  • 前面提過,AWT沒提供能夠直接顯示圖像的控制項,這無疑是個令人詬病的短板,因為一上來就得由程式員自己去定義新控制項,對於初學者來講很不友好。這個問題在Swing中也解決掉了,不過Swing並未提供單獨的圖像視圖,而是利用標簽控制項JLabel來顯示圖像。JLabel的setText方法用來設置標簽上的文本 ...
  • 9.94 守護線程與守護進程的區別 9.95 線程互斥鎖 9.96 死鎖現象與遞歸鎖 mutexA=mutexB=RLock() 一個線程拿到鎖,counter加1,該線程內又碰到加鎖的情況,則counter繼續加1,這期間所有其他線程都只能等待,等待該線程釋放所有鎖,即counter遞減到0為止 ...
  • LeetCode:135. 分發糖果 老師想給孩子們分發糖果,有 N 個孩子站成了一條直線,老師會根據每個孩子的表現,預先給他們評分。 你需要按照以下要求,幫助老師給這些孩子分發糖果: 每個孩子至少分配到 1 個糖果。 相鄰的孩子中,評分高的孩子必須獲得更多的糖果。 那麼這樣下來,老師至少需要準備多 ...
  • .NET Core CSharp 初級篇 1 6 本節內容為類的多態與繼承 簡介 終於講到了面向對象三大特性中的兩大特性——繼承與多態。通過繼承與多態,我們能很好的將類的拓展性發揮到了極致。在下麵的內容講解中,我們將從各個方面對繼承和多態進行刨析。 繼承 繼承事實上是一個非常好理解的語法,在C 中實 ...
  • 1. 前言 上一篇文章介紹了使用Resizer實現Expander簡單的動畫效果,運行效果也還好,不過只有展開/摺疊而缺少了淡入/淡出的動畫(畢竟Resizer模仿Expander只是附帶的功能)。這篇繼續Measure的話題,自定義了一個帶有動畫的ExtendedExpander。 2. Exte ...
  • 使用 MiniProfiler 來分析 ASP.NET Core 應用 MiniProfiler( "https://miniprofiler.com/" )是一個輕量級且簡單易用的分析工具庫,它可以用來分析ASP.NET Core應用。 優點 針對ASP.NET Core MVC應用,使用Mini ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...