1. 程式人生 > >Taurus.MVC 2.3.2 :WebAPI 文件整合測試功能及附加<%# JS執行功能語法 %>

Taurus.MVC 2.3.2 :WebAPI 文件整合測試功能及附加<%# JS執行功能語法 %>

前言:

前些天有網友提到了那個介面醜陋的SwaggerUI,讓我想起了多年前實現的WebAPI文件未完成的功能點,於是,動手了,便有了本文的內容。

開源地址:https://github.com/cyq1162/Taurus.MVC

 

1、WebAPI 文件整合測試功能(增強說明)

開啟WebAPI文件:web.config 或 appsettings.json

設定:"IsStartDoc": true

即可通過/doc訪問自動生成的WebAPI文件

1、過濾掉無描述的介面。

文件自動生成的來源來自專案中的Xml文件註釋

為了能更好的控制顯示的結果,不帶註釋的類或方法(只收錄public),不會被收錄顯示。

2、引數的顯示與執行測試說明

自動和成的引數,來自以下方法的註釋:

        /// <summary>
        /// 獲取Token
        /// </summary>
        /// 
        /// <param name="un" required="true" value="13488889999">使用者名稱</param>
        /// <param name="pwd" type="header">密碼</param>
        /// <param name="upload" type="file">圖片上傳</param>
        /// <returns>{success:true:msg:"tokenString..."}</returns>
        [HttpGet, Require("un", true, RegexConst.Mobile), Require("pwd")]
        [HttpPost]
        public void GetToken(string un, string pwd)
        {
            //is required. is invalid. 判斷 是否:中文
            //CheckFormat("{0}不能為空&{0}格式錯誤", @"un&使用者名稱&^1[3|4|5|8][0-9]\d{8}$", @"pwd&密碼&^[\u0391-\uFFE5]+$");
            //string userName = Query<string>("un");
            //string pwd = Query<string>("pwd");
            if (!string.IsNullOrEmpty(un) && !string.IsNullOrEmpty(pwd))
            {
                byte[] data = System.Text.Encoding.UTF8.GetBytes("Taurus:" + un);
                string base64 = Convert.ToBase64String(data);
                Write(base64, true);
            }
            else
            {
                Write("UserName or Password Error", false);
            }
        }

  

其中:

required 決定是否必填 true 或 false(時可不寫)
type 決定顯示的文字框型別 header(請求頭) file(檔案上傳) 其它(時可不寫)
returns 顯示返回的結果。


3、執行測試結果

可修改請求路徑、請求引數、請求型別。

點選執行執行結果:

系統會自動收集引數並執行,返回結果及請求頭的內容。

 

2、附加<%# JS執行功能語法 %>

 為了實現這個自動測試功能,順路增加了該語法功能。

在/Views/Doc/detail.html 中,有這樣一段html程式碼:

 <tbody id="ParaView" clearflag="1">
                                                <tr>
                                                    <td width="80px">{0}</td>
                                                    <td>{1}</td>
                                                    <td>
                                                        <%# ${required}?'是':'否'%>
                                                    </td>
                                                    <td><%# '${type}'=='file'?'檔案':('${type}'=='header'?'請求頭':'${type}')%></td>
                                                    <td>
                                                        <![CDATA[
                                                        <input name="{0}" type="<%# '${type}'=='file'?'file':'text'%>" value="{4}" style="width:90%"  rtype="${type}" <%# ${required}?'required="required"':'false'%> />
                                                        ]]>
                                                    </td>

                                                </tr>
                                            </tbody>

其中 ${索引或屬性名} 是之前就有的繫結語法。

為了方便html中對於簡單的判斷的文字變更,思考之後,把<%# 這裡的內容都會被JS引擎執行 %>語法塊功能給加上了。

細節說明:

由於模板是xhtml語法要求,對於不符合xml語法的地方,可以用

<![CDATA[ ...]]>  包含起來。

 

結束說明:

1、本次版本更新主要就是以上兩點功能。

2、由於net core 下支援 <%# %>語法,引用了Microsoft.ClearScript.dll(這個最低支援是3.1),所以netcore的預設版本調高到3.1。