Taurus.MVC 2.3 開源發佈:加強屬性Require驗證功能,自帶WebAPI文檔生成功能

背景:

上週,把 Taurus.MVC 在 Linux (CentOS7) 上部署任務完成後。git

也不知怎麼的,突然就想給框架集成一下WebAPI文檔功能,因此就動手了。github

覺得一天能搞完,結果,好幾天過去了。後端

原本還想集成自動化批量執行測試功能,不過想一想仍是放到下一版本實現吧。數組

感受差很少了,就先和大夥分享一下:併發

Taurus.MVC Nuget 更新:

昨夜,Nuget的Package升級了一下,和源碼版本作了下同步。mvc

一般源碼的版本都會比Nuget包的靠前一個小版本:框架

目前:Taurus.MVC 升級到:V2.3.0.0 (CYQ.Data 同步升級到:V5.7.9.7)前後端分離

最近版本的更新內容(好多功能都是在 CYQ.Data 裏升級,因此這裏記錄不多):dom

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下的的部署(路徑和大小寫調整)

一、增長了CMS功能的標籤替換功能。
二、增長參數驗證屬性(Require),驗證是否必填寫和正則格式。
三、加強了參數的類型轉換。
四、增長WebAPI文檔生成功能。
五、CYQ.Data同時升級到V5.7.9.7

下面介紹一下重點功能:性能

1、新增幾個請求屬性:HttpPut、HttpHead、HttpDelete

原來只有HttpGet和HttpPost。

因此方法只能指定其中的一個,如:

[HttpGet]
public void GetToken(string un, string pwd) { }

如今新增了幾個,機制稍爲調整了一下,還容許能夠同時指定多個:

[HttpPost,HttpPut]
public void GetToken(string un, string pwd) { }

2、新增參數驗證屬性: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) { }

3、加強功能的:CMS 標籤語法

一、${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>

4、默認實現的用戶權限及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

5、WebAPI文檔生成功能

其實這個纔是重點,上面的功能,都是在弄這個的時候,順帶完成的。

只須要配置:

 <!--是否啓動建立API文檔,訪問路徑爲:/doc-->
    <add key="Taurus.IsStartDoc" value="true"/>

而後訪問:/doc 路徑,就能夠看到WebAPI文檔了。

示例地址:http://taurus.cyqdata.com/doc

對於控制器,項目屬性裏須要勾選輸出Xml文檔選項:

 

文檔的默認界面(找皮膚好辛苦,最後找了秋色的博客皮膚改的)

方法詳情頁面:

 

若是要調整樣式,能夠看(若是是引用的Nuget,你目前仍須要從框架開源的源碼處把Doc目錄的Copy過去,後續版本會把這個打包進dll,動態解壓):

 

總結:

一、Taurus.MVC 是輕量級的 mvc 框架,真正意義上的先後端分離,沒有後端語法入侵。

二、學習成本比 ASP.NET MVC 低不少,性能高,易掌控,支持大併發。

三、同一套代碼,一套機制,能夠走在Win和Linux中,不用搞個.NET Core還部署在window這麼尷尬。

四、迴歸Http本質的框架,你才能以不變應萬變,不用陷入不斷變化的框架的無限深坑裏。

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

相關文章
相關標籤/搜索