背景:

上周,把 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

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

  1. GJM : Taurus.MVC 2.0 开源发布:WebAPI开发教程 [转载]

    Taurus.MVC 2.0 开源发布:WebAPI开发教程 转载自http://www.cnblogs.com/cyq1162/p/6069020.html 因是新手  粘贴时有一个版权问题 本文原 ...

  2. Taurus.MVC 2.3.2 :WebAPI 文档集成测试功能及附加<%# JS执行功能语法 %>

    前言: 前些天有网友提到了那个界面丑陋的SwaggerUI,让我想起了多年前实现的WebAPI文档未完成的功能点,于是,动手了,便有了本文的内容. 开源地址:https://github.com/cy ...

  3. Taurus.MVC 2.3.4 :WebAPI 文档集成测试功能升级:WebAPI批量自动化测试功能。

    前言: 最近升级了一下Taurus.MVC,现在最新版本是:Taurus.MVC 2.3.4,源码版本和nuget同步. 下面分三个步骤介绍下新版本的WebAPI批量自动化测试功能. 1.启用WebA ...

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

    背景: 1:有用户反馈了关于跨域请求的问题. 2:有用户反馈了参数获取的问题. 3:JsonHelper的增强. 在综合上面的条件下,有了2.2版本的更新,也因此写了此文. 开源地址: https:/ ...

  5. Taurus.MVC 2.0 开源发布:WebAPI开发教程

    背景: 有用户反映,Tausus.MVC 能写WebAPI么? 能! 教程呢? 嗯,木有! 好吧,刚好2.0出来,就带上WEBAPI教程了! 开源地址: https://github.com/cyq1 ...

  6. Taurus.MVC WebAPI 入门开发教程8:WebAPI文档与自动化测试。

    系列目录 1.Taurus.MVC WebAPI  入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...

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

    很久以前就使用ADB这个工具来生成项目的帮助文档.功能强大,在学习一些开源项目的过程中,官方没有提供CHM帮助文档,所以为了快速的了解项目结构和注释.就生成文档来自己看,非常好用.这也是一个学习方法吧 ...

  8. 再见丑陋的 SwaggerUI,这款开源的API文档生成神器界面更炫酷,逼格更高!

    一般在使用 Spring Boot 开发前后端分离项目的时候,都会用到 Swagger.Swagger 是一个规范和完整的框架,用于生成.描述.调试和可视化 RESTful 风格的 Web API 服 ...

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

    微软放弃Sandcastle有些年头了,微软最近开源了全新的文档生成工具DocFX,目前支持C#和VB,类似JSDoc或Sphinx,可以从源代码中提取注释生成文档之外,而且还有语法支持你加入其他的文 ...

随机推荐

  1. android与js的交互之jsbridge使用

    众所周知,app的一些功能可能会使用到H5开发,这就难免会遇到java与js 的相互调用,android 利用WebViewJavascriptBridge 实现js和java的交互,这里介绍下JsB ...

  2. XSS(笔记1)

    概念 跨站脚本(Cross-Site Scripting,XSS) 发生在目标网站中目标用户的浏览器层面上,当用户浏览器渲染整个HTML文档的过程中出现了不被预期的脚本指令并执行时,XSS就会发生.为 ...

  3. 你不知道的JavaScript--Item22 Date对象全解析

    本篇主要介绍 Date 日期和时间对象的操作. 1. 介绍 1.1 说明 Date对象,是操作日期和时间的对象.Date对象对日期和时间的操作只能通过方法. 1.2 属性 无: Date对象对日期和时 ...

  4. SVN更新失败,提示locked 怎么破

    有时在svn更新或提交代码时,会报错,让你cleanup  如果cleanup解决不了,就要删除被锁定的文件夹下的文件,然后就可以更新或提交了 怎么做呢? 1.首先在CMD中进入你工作目录被锁定的文件 ...

  5. angularJS--多个控制器之间的数据共享

    为了在控制器之间共享数据,需要在服务中添加一个用来储存用户名的方法.记住,服务在 应用的生命周期内是单例模式的,因此可以将用户名安全地储存在其中. <!DOCTYPE html> < ...

  6. CentOS 6.2+Nginx+Nagios,手机短信和qq邮箱提醒

    http://chenhao6.blog.51cto.com/6228054/1323192 标签:软件包 配置文件 nagios 服务端 监控 原创作品,允许转载,转载时请务必以超链接形式标明文章  ...

  7. 【Windows】关于shift跟空格同时按无反应的解决方案

    在玩游戏中我们经常会遇到各种功能键的使用方法 例如shift跟空格,由于我以前经常要加速大跳,突然发现shift跟空格一起按没有效果,语言设置里也没有相关的快捷键设置到,所以网上查询了一番,至此,问题 ...

  8. MySQL 8 新特性之降序索引

    MySQL 8.0终于支持降序索引了.其实,从语法上,MySQL 4就支持了,但正如官方文档所言,"they are parsed but ignored",实际创建的还是升序索引 ...

  9. sdoi 2009 HH去散步 矩阵乘

    如果没有题里的"不会立刻沿着刚刚走来的路走回"限制,那么直接矩乘计算k步的方案数 但加了这个限制,就不能以点来矩乘了,考虑边数<=60,如果以边建邻接矩阵呢?? 先拆边,再把 ...

  10. BZOJ_3747_[POI2015]Kinoman_线段树

    BZOJ_3747_[POI2015]Kinoman_线段树 Description 共有m部电影,编号为1~m,第i部电影的好看值为w[i]. 在n天之中(从1~n编号)每天会放映一部电影,第i天放 ...