前言:

前些天有网友提到了那个界面丑陋的SwaggerUI,让我想起了多年前实现的WebAPI文档未完成的功能点,于是,动手了,便有了本文的内容。

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

1、WebAPI 文档集成测试功能(增强说明)

开启WebAPI文档:web.config 或 appsettings.json

设置:"IsStartDoc": true

即可通过/doc访问自动生成的WebAPI文档

1、过滤掉无描述的接口。

文档自动生成的来源来自项目中的Xml文档注释

为了能更好的控制显示的结果,不带注释的类或方法(只收录public),不会被收录显示。

2、参数的显示与执行测试说明

自动和成的参数,来自以下方法的注释:

        /// <summary>
/// 获取Token
/// </summary>
///
/// <param name="un" required="true" value="13488889999">用户名</param>
/// <param name="pwd" type="header">密码</param>
/// <param name="upload" type="file">图片上传</param>
/// <returns>{success:true:msg:"tokenString..."}</returns>
[HttpGet, Require("un", true, RegexConst.Mobile), Require("pwd")]
[HttpPost]
public void GetToken(string un, string pwd)
{
//is required. is invalid. 判断 是否:中文
//CheckFormat("{0}不能为空&{0}格式错误", @"un&用户名&^1[3|4|5|8][0-9]\d{8}$", @"pwd&密码&^[\u0391-\uFFE5]+$");
//string userName = Query<string>("un");
//string pwd = Query<string>("pwd");
if (!string.IsNullOrEmpty(un) && !string.IsNullOrEmpty(pwd))
{
byte[] data = System.Text.Encoding.UTF8.GetBytes("Taurus:" + un);
string base64 = Convert.ToBase64String(data);
Write(base64, true);
}
else
{
Write("UserName or Password Error", false);
}
}

  

其中:

required 决定是否必填 true 或 false(时可不写)
type 决定显示的文本框类型 header(请求头) file(文件上传) 其它(时可不写)
returns 显示返回的结果。

3、运行测试结果

可修改请求路径、请求参数、请求类型。

点击执行运行结果:

系统会自动收集参数并执行,返回结果及请求头的内容。

2、附加<%# JS执行功能语法 %>

为了实现这个自动测试功能,顺路增加了该语法功能。

在/Views/Doc/detail.html 中,有这样一段html代码:

 <tbody id="ParaView" clearflag="1">
<tr>
<td width="80px">{0}</td>
<td>{1}</td>
<td>
<%# ${required}?'是':'否'%>
</td>
<td><%# '${type}'=='file'?'文件':('${type}'=='header'?'请求头':'${type}')%></td>
<td>
<![CDATA[
<input name="{0}" type="<%# '${type}'=='file'?'file':'text'%>" value="{4}" style="width:90%" rtype="${type}" <%# ${required}?'required="required"':'false'%> />
]]>
</td> </tr>
</tbody>

其中 ${索引或属性名} 是之前就有的绑定语法。

为了方便html中对于简单的判断的文字变更,思考之后,把<%# 这里的内容都会被JS引擎执行 %>语法块功能给加上了。

细节说明:

由于模板是xhtml语法要求,对于不符合xml语法的地方,可以用

<![CDATA[ ...]]>  包含起来。

结束说明:

1、本次版本更新主要就是以上两点功能。

2、由于net core 下支持 <%# %>语法,引用了Microsoft.ClearScript.dll(这个最低支持是3.1),所以netcore的默认版本调高到3.1。

Taurus.MVC 2.3.2 :WebAPI 文档集成测试功能及附加<%# JS执行功能语法 %>的更多相关文章

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

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

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

    背景: 上周,把 Taurus.MVC 在 Linux (CentOS7) 上部署任务完成后. 也不知怎么的,忽然就想给框架集成一下WebAPI文档功能,所以就动手了. 以为一天能搞完,结果,好几天过 ...

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

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

  4. webapi文档

    webapi文档描述-swagger 最近做的项目使用mvc+webapi,采取前后端分离的方式,后台提供API接口给前端开发人员.这个过程中遇到一个问题后台开发人员怎么提供接口说明文档给前端开发人员 ...

  5. ASP.NET WebApi 文档Swagger深度优化

    本文版权归博客园和作者吴双本人共同所有,转载和爬虫请注明博客园蜗牛原文地址,cnblogs.com/tdws   写在前面 请原谅我这个标题党,写到了第100篇随笔,说是深度优化,其实也并没有什么深度 ...

  6. ASP.NET WebApi 文档Swagger中度优化

    本文版权归博客园和作者吴双本人共同所有,转载和爬虫请注明原文地址:www.cnblogs.com/tdws   写在前面 在后台接口开发中,接口文档是必不可少的.在复杂的业务当中和多人对接的情况下,简 ...

  7. Webapi文档描述-swagger优化

    一.前言 最近做的项目使用WebApi,采取前后端分离的方式,后台提供API接口给前端开发人员.这个过程中遇到一个问题后台开发人员怎么提供接口说明文档给前端开发人员,最初打算使用word.Xmind思 ...

  8. 使用Swagger 搭建高可读性ASP.Net WebApi文档

    一.前言 在最近一个商城项目中,使用WebApi搭建API项目.但开发过程中,前后端工程师对于沟通接口的使用,是非常耗时的.之前也有用过Swagger构建WebApi文档,但是API文档的可读性并不高 ...

  9. WebApi 文档Swagger

    NET WebApi 文档Swagger中度优化   本文版权归博客园和作者吴双本人共同所有,转载和爬虫请注明原文地址:www.cnblogs.com/tdws   写在前面 在后台接口开发中,接口文 ...

随机推荐

  1. vueThink框架搭建与填坑(new)

    自己跟着官网搭建vueThink框架,发现github上文档有很多坑.所以总结一下(仅针对WIN端下载使用) 1.安装node.js 前端部分是基于node.js上运行的,所以必须先安装node.js ...

  2. 数据结构和算法(Golang实现)(15)常见数据结构-列表

    列表 一.列表 List 我们又经常听到列表 List数据结构,其实这只是更宏观的统称,表示存放数据的队列. 列表List:存放数据,数据按顺序排列,可以依次入队和出队,有序号关系,可以取出某序号的数 ...

  3. 数据结构和算法(Golang实现)(29)查找算法-2-3树和左倾红黑树

    某些教程不区分普通红黑树和左倾红黑树的区别,直接将左倾红黑树拿来教学,并且称其为红黑树,因为左倾红黑树与普通的红黑树相比,实现起来较为简单,容易教学.在这里,我们区分开左倾红黑树和普通红黑树. 红黑树 ...

  4. k8s~helm镜像版本永远不要用latest

    对于容器编排工具k8s来说,你可以使用它规定的yaml格式的脚本,使用客户端kubectl来与k8s进行通讯,将你定义好的yaml部署脚本应用到k8s集群上,而这对yaml脚本一般来说都是很像的,就是 ...

  5. 最短路变短了 (思维+反向djstrea)

    题解:设有一条边x->y,数组dis1[i]表示从1到i的最短距离,dis2[i]表示从n到i的最短距离. 1 如果说将x->y反向之前没有经过x->y,但是反向后我经过了x,y说明 ...

  6. mybatis配置的逻辑删除不好使了

    在使用mybatisplus中,可使用逻辑删除.案例中,使用mybatisplus逆向生成model,使用delete_status为识别逻辑删除字段. springboot 中配置启动逻辑删除 my ...

  7. BJDCTF 2nd web

    先贴一下Y1ng大佬的WP elementmaster 脑洞确实大,源码中hidden的id可以用hex解码成Po. 在URL后面输入Po.php得到一个点, 然后不知所措 被水淹没 实际上这里是要遍 ...

  8. selenium 时间等待的方法

    一.强制等待固定秒数 try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } 执行到sl ...

  9. Java讲解RPC的基本实现

    RPC远程过程调用可以说是分布式系统的基础,本文将通过Java演示一次普通的rpc调用到底发生了什么. 我曾经在网上看到有人提问,为什么RPC要叫作远程过程调用,而不叫作RMC远程方法调用.个人认为R ...

  10. redis:key命令(二)

    设置一个key:set name hello 获取一个key的值:get name 查看所有的key:keys * 查看key是否存在:exists name 移动key到指定库:move name ...