本文介紹了Taurus新版本V2.3的新功能及基礎用法,包括Require、Token等屬性,還有增強的標簽功能,集成的許可權驗證功能,關鍵還有WebAPI文檔生成功能。 ...
背景:
上周,把 Taurus.MVC 在 Linux (CentOS7) 上部署任務完成後。
也不知怎麼的,忽然就想給框架集成一下WebAPI文檔功能,所以就動手了。
以為一天能搞完,結果,好幾天過去了。
本來還想集成自動化批量執行測試功能,不過想想還是放到下一版本實現吧。
感覺差不多了,就先和大伙分享一下:
Taurus.MVC Nuget 更新:
昨夜,Nuget的Package升級了一下,和源碼版本做了下同步。
通常源碼的版本都會比Nuget包的靠前一個小版本:
目前:Taurus.MVC 升級到:V2.3.0.0 (CYQ.Data 同步升級到:V5.7.9.7)
最近版本的更新內容(好多功能都是在 CYQ.Data 里升級,所以這裡記錄很少):
V2.2.3.5(2017-04-19) - V 2.3 (2019-03-22)
1:支持Controller分佈在不同的dll中(Taurus.Controllers配置允許多個,逗號分隔)。
2:支持Controller二次繼承(A:B B:Taurus.Core.Controller)
1:支持NetCore下的的部署(路徑和大小寫調整)
1、增加了CMS功能的標簽替換功能。
2、增加參數驗證屬性(Require),驗證是否必填寫和正則格式。
3、增強了參數的類型轉換。
4、增加WebAPI文檔生成功能。
5、CYQ.Data同時升級到V5.7.9.7
下麵介紹一下重點功能:
一、新增幾個請求屬性:HttpPut、HttpHead、HttpDelete
原來只有HttpGet和HttpPost。
所以方法只能指定其中的一個,如:
[HttpGet]
public void GetToken(string un, string pwd) { }
現在新增了幾個,機制稍為調整了一下,還允許可以同時指定多個:
[HttpPost,HttpPut]
public void GetToken(string un, string pwd) { }
二、新增參數驗證屬性:Require
該屬性參數有4個重載:
public RequireAttribute(string paraName)
public RequireAttribute(string paraName, bool isRequired, string regex)
public RequireAttribute(string paraName, bool isRequired, string regex, string outParaName)
public RequireAttribute(string paraName, bool isRequired, string regex, string emptyTip, string regexTip)
一共6種使用方法:
使用一:指定un參數不能為空。
[HttpGet,Require("un")]
public void GetToken(string un, string pwd) { }
使用二:指定un、pwd、random三個參數都不能為空,Require可以指定多個。
[HttpPost,Require("un,pwd"),Require("random")]
public void GetToken(string un, string pwd) { }
使用三:指定user實體內的UserName參數不能為空、para數組內第1個對象的Name參數不能為空。
[HttpPost,Require("user.UserName,para.0.Name"]
public void GetToken(Users user,List<ParaEntity> para) { }
使用四:指定un不能為空,同時滿足手機號的正則驗性規則。
[HttpGet,Require("un",true,RegexConst.Mobile)]
public void GetToken(string un, string pwd) { }
使用五:指定驗證的提示文字。
[HttpGet,Require("un",true,RegexConst.Mobile,"用戶名")]
public void GetToken(string un, string pwd) { }
PS說明:沒指定提示文字前,預設的提示是:
{0} is required.
{0} is invalid.
指定提示文字後,如果是中文,則提示變為中文:
{0}不能為空。
{0}格式錯誤。
使用六:指定自定義提示文字。
[HttpGet,Require("un",true,RegexConst.Mobile,"手機號是不能為空的","國內的手機號是11位數字的。")]
public void GetToken(string un, string pwd) { }
三、增強功能的:CMS 標簽語法
1、${xxx} 允許xxx指定從系統的請求參數中獲取:
A:從Get的請求參數中獲取;
B:從Request[XXX]的請求參數中獲取;
C:從Request.Header的請求參數中獲取。
示例:${host}是從系統變數中獲取的。
<h1 id="labSpaceName"> <a href="#">Web API 文檔 - Taurus.MVC</a></h1> <h2 id="labSpaceIntro">Host:http://${host}</h2>
2、${xxx:這裡可以設置預設值。} 允許指定參數無值時的預設值。
示例:/detail?d=
<h1 class="title_txt"> <a href="#">${d:這家伙很懶,沒有寫說明。}</a> </h1>
四、預設實現的用戶許可權及Token機制
如果要開啟此功能,你需要設置以下的配置:
<!--是否啟動預設的Token機制,可配置的映射欄位:TableName,UserName,Password(這三個必填寫,後面可選),FullName,Status,PasswordExpireTime,Email,Mobile,RoleID,TokenExpireTime(這個是配置小時)--> <add key="Taurus.Auth" value="{TableName:Users,TokenExpireTime:24}"/>
指定好表名,及其它欄位名的映射之後,該功能就自動開啟了。
如果其它欄位名和系統預設的名稱一樣,則可以不用指定映射。
對於WebAPI,啟用後,可以通過以下路徑獲取Token
/auto/gettoken 參數: ?uid=xxx&pwd=xxx
對於方法的驗證,指定token屬性即可
[Token]
public void GetXX() { }
另外提供了AuthHelper類,集成(MVC)下的註冊、登陸、退出、獲取用戶信息等基礎功能。
public static bool Login(string userName, string password, out string errMsg)
public static bool Reg(string userName, string password, out string msg)
public static void Logout()
public static bool ChangePassword(string password)
基礎屬性:
public static bool TokenIsValid
public static string UserID
public static string UserName
public static string FullName
public static string Token
五、WebAPI文檔生成功能
其實這個才是重點,上面的功能,都是在弄這個的時候,順帶完成的。
只需要配置:
<!--是否啟動創建API文檔,訪問路徑為:/doc--> <add key="Taurus.IsStartDoc" value="true"/>
然後訪問:/doc 路徑,就可以看到WebAPI文檔了。
示例地址:http://taurus.cyqdata.com/doc
對於控制器,項目屬性里需要勾選輸出Xml文檔選項:
文檔的預設界面(找皮膚好辛苦,最後找了秋色的博客皮膚改的)
方法詳情頁面:
如果要調整樣式,可以看(如果是引用的Nuget,你目前仍需要從框架開源的源碼處把Doc目錄的Copy過去,後續版本會把這個打包進dll,動態解壓):
總結:
1、Taurus.MVC 是輕量級的 mvc 框架,真正意義上的前後端分離,沒有後端語法入侵。
2、學習成本比 ASP.NET MVC 低很多,性能高,易掌控,支持大併發。
3、同一套代碼,一套機制,可以走在Win和Linux中,不用搞個.NET Core還部署在window這麼尷尬。
4、回歸Http本質的框架,你才能以不變應萬變,不用陷入不斷變化的框架的無限深坑裡。
開源地址:https://github.com/cyq1162/Taurus.MVC