Taurus.MVC 2.3 开源发布:增强属性Require验证功能,自带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

原文地址:https://www.cnblogs.com/cyq1162/p/10578997.html

时间: 2024-10-07 09:14:18

Taurus.MVC 2.3 开源发布:增强属性Require验证功能,自带WebAPI文档生成功能的相关文章

Taurus.MVC 2.2 开源发布:WebAPI 功能增强(请求跨域及Json转换)

背景: 1:有用户反馈了关于跨域请求的问题. 2:有用户反馈了参数获取的问题. 3:JsonHelper的增强. 在综合上面的条件下,有了2.2版本的更新,也因此写了此文. 开源地址: https://github.com/cyq1162/taurus.mvc 下面对增强的功能进行介绍: 1:跨域请求 除了常规的的JsonP跨域,Html5开始支持增强跨域,则变得更为方便,只需要服务端请求头输出: 1  if (context.Request.UrlReferrer != null && 

DBImport v3.3 中文版发布:数据库数据互导及文档生成工具(IT人员必备)

前言: 好久没写文了, 距离上一篇文章是3个月前的事了,虽然工作很忙,主要还是缺少写作的内容和激情,所以没怎么动手. 之前有一个来月不断面试不同层次来应聘的人员,很有想写文的冲动,后来还是忍住了. 估计写了也是那种说人坏话.恨铁不成钢的情绪文,没啥营养,所以情绪过了就没想写了. 在公司除了管理上的事情之外,另外也研发了一套适用信息系统的快速开发框架,这个有机会再写写文和大伙分享了. 下面言归正文了. 背景: 关于这个DBImport工具,发布的版本不多,仅有:V1.0.V2.0.V3.0.V3.

.NET平台开源项目速览(4).NET文档生成工具ADB及使用

转载自  http://www.cnblogs.com/asxinyu/p/dotnet_Opensource_project_ADB_CSharpDocument.html 阅读目录 1.ADB介绍 2.ADB生成.NET文档过程 3.资源与代码 很久以前就使用ADB这个工具来生成项目的帮助文档.功能强大,在学习一些开源项目的过程中,官方没有提供CHM帮助文档,所以为了快速的了解项目结构和注释.就生成文档来自己看,非常好用.这也是一个学习方法吧.例如本文在: .NET平台开源项目速览(2)Co

微软开源全新的文档生成工具DocFX

微软放弃Sandcastle有些年头了,微软最近开源了全新的文档生成工具DocFX,目前支持C#和VB,类似JSDoc或Sphinx,可以从源代码中提取注释生成文档之外,而且还有语法支持你加入其他的文件链接到API添加额外的说明,DocFX会扫描你的源代码和附加的文件为你生成一个完整的HTML模版网站,你可以自己通过模版定制,目前已经内嵌了几个模版,包括静态的HTML页面和AngularJS页面.你还可以自己定制模版,具体参考 how to create custom template. 源代码

DBImport v3.44 中文版发布:数据库数据互导及文档生成工具(IT人员必备)

前言: 距离上一个版本V3.3版本的文章发布,已经是1年10个月前的事了. 其实版本一直在更新,但也没什么大的功能更新,总体比较稳定,所以也不怎么写文介绍了. 至于工作上的事,之前有半年时间跑去学英语.考驾照.到健身房请私教,远离了一下代码的世界,现在又回归了. 最近上班了,新的公司需要招.NET系.产品经理,有兴趣的可以左侧扣我(我部门要人,地点广州). 另外:阿里最近收购了一家公司,也需要Java系的高手和测试人员,有兴起的也可以扣我(我朋友的部门要人,地点广州). 嗯,闲话少说,看看工具的

前端 之 jQuery: 属性操作; 操作input中的value; 文档操作***(二)

属性操作 操作input中的value 文档操作*** ... ... ... ... ... 一, 属性操作 jquery的属性操作模块分为四个部分:html属性操作,dom属性操作,类样式操作和值操作 html属性操作:是对html文档中的属性进行读取,设置和移除操作. 比如: attr() 设置属性值或者 返回被选元素的属性值 //获取值:attr()设置一个属性值的时候 只是获取值 var id = $('div').attr('id') console.log(id) var cla

[sharepoint]rest api文档库文件上传,下载,拷贝,剪切,删除文件,创建文件夹,修改文件夹属性,删除文件夹,获取文档列表

写在前面 最近对文档库的知识点进行了整理,也就有了这篇文章,当时查找这些接口,并用在实践中,确实废了一些功夫,也为了让更多的人走更少的弯路. 系列文章 sharepoint环境安装过程中几点需要注意的地方 Rest API的简单应用 rest api方式实现对文档库的管理 通过WebClient模拟post上传文件到服务器 WebHttpRequest在sharepoint文档库中的使用 [sharepoint]Rest api相关知识(转) [sharepoint]根据用户名获取该用户的权限

Excel催化剂开源第5波-任务窗格在OFFICE2013中新建文档不能同步显示问题解决

在OFFICE2013及之后,使用了单文档界面技术,不同于以往版本可以共享任务空格.功能区.所以当开发任务窗格时,需要考虑到每一个工作薄都关联一个任务窗格. 背景介绍 单文档界面摘录官方定义如下:对 Excel 2013 中的单文档界面 (SDI) 进行更改对可编程性具有一定影响.SDI 意味着每个工作簿都将有其自己的顶级应用程序窗口,并将有自己的相应功能区. 带来的好处是不同工作薄可以精细控制不同的显示,例如工作薄A,显示功能区Tab1,工作薄B显示功能区Tab2,区分对待不同文档所使用的功能

DBImport v3.5 中文版发布:数据库定时同步及文档生成工具(IT人员必备)

前言: 趁着最近的休息时间,只能多勤快些:多写代码,多更新文章. 因为一旦投入新的工作,估计博客又会恢复到一年才产几篇的状态. 对于DBImport,因为用户的意见,增加了一个亮点功能,让软件B格升为数据库时时同步工具,所以值的介绍一下. 相比上一版本的主要功能更新: 1:优化MySql的导入效率. 2:增加定时功能(B格提升到时时数据同步功能). 3:优化导出的表脚本和数据脚本. 4:从.NET 2.0 升级编绎成.NET 4.0 版本:(主要是为了支持Oracle:Oracle.Manage