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

来源:https://www.cnblogs.com/cyq1162/archive/2019/03/22/10578997.html
-Advertisement-
Play Games

本文介紹了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

 


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

-Advertisement-
Play Games
更多相關文章
  • 一、逆向工程的作用 簡單來說,就是替我們生成Java代碼。 之前使用Mybatis的Mapper代理方法開發,還需要自己創建實體類,而且屬性還得和資料庫中的欄位對應。這著實是機械化的而且比較麻煩的事,而機械化的事情正是代碼所擅長的,於是Mybatis官方就提供了MyBatis Generator , ...
  • 0X00 前言 在.NET處理 Ajax應用的時候,通常序列化功能由JavaScriptSerializer類提供,它是.NET2.0之後內部實現的序列化功能的類,位於命名空間System.Web.Script.Serialization、通過System.Web.Extensions引用,讓開發者 ...
  • 0X00 前言 Java中的Fastjson曾經爆出了多個反序列化漏洞和Bypass版本,而在.Net領域也有一個Fastjson的庫,作者官宣這是一個讀寫Json效率最高的的.Net 組件,使用內置方法JSON.ToJSON可以快速序列化.Net對象。讓你輕鬆實現.Net中所有類型(對象,基本數據 ...
  • 分支或多線程編程是編程時最難最對的事情之一。這是由於它們的並行性質所致,即要求採用與使用單線程的線性編程完全不同的思維模式。對於這個問題,恰當類比就是拋接雜耍表演者,必須在空中拋接多個球,而不要讓它們相互干擾。這是一項重大挑戰。然而,通過正確的工具和思維模式,這項挑戰是能應對的。 本文將深入介紹我為 ...
  • DSAPI.dll不定期更新,增加功能,故無法每次都發到網上,如果需要獲得最新版DSAPI.dll的,請到QQ群:419130936群共用里下載。 簡介 dsapi.dll是一款基於.net平臺的多功能動態鏈接庫,包含數百項功能。主要用於簡化代碼量、提升代碼可維護性,以及加速實現需求。dsapi.d ...
  • 使用DSAPI實現PNG異形窗體,註意,該窗體為層樣式窗體,以PNG或32位帶透明通道的圖像合成到屏幕,此方法不會觸發窗體的重繪,故原窗體(包括其子控制項)均不會顯示,如果需要更新畫面,需要重新用代碼等繪製好一張PNG圖片然後再次調用該方法。 示例素材 運行效果 ...
  • 效果圖 部分代碼 本演示項目源代碼請到QQ群文件下載 ...
  • 通常,說到Hook鍵盤滑鼠,總需要一大堆代碼,涉及各種不明白的API.而在DSAPI中,可以說已經把勾子簡化到不能再簡化的地步.甚至不需要任何示例代碼即會使用.那麼如何實現呢? 註意上面帶了WithEvent. 寫完上面那句後,即可選擇該HK,然後通過事件列表裡選擇相應的事件編寫你需要的功能即可.支 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...