BeetleX.FastHttpApi之测试插件集成
说到Webapi测试工具相信很多人想起Swagger,它可以非常方便地集成到项目中并进行项目Webapi接口测试。而BeetleX.FastHttpApi在新版本中也提供类似的插件,只需要引用这个插件就可以对BeetleX.FastHttpApi服务的接口进行测试。插件的工作方式和Swagger类似,但提供的输入控件就相对丰富一些。
安装插件
可能通过引用BeetleX.FastHttpApi.ApiDoc的最新版,Nunget地址如下:
https://www.nuget.org/packages/BeetleX.FastHttpApi.ApiDoc/
引用插件后可以通过HttpApiServer.Register方法把插件注册到服务,代码如下:
httpserver.Register(typeof(BeetleX.FastHttpApi.ApiDoc.DocController).Assembly);
注册插件就可以通过服务的/__apidoc/就可以查看当前服务的所有Webapi信息和调用,界面如下:

左边的菜单是Webapi列表,右边则是测试界面。选择一个Webapi的测试界面如下:

接下来介绍一下插件的使用和显示扩展。
输入控件
插件提供一些基础的输入控件用于提供测试时的值输入,控件分别有:number,date,time,select,radio,checkbox,switch,remark和text;如果熟悉elementUI相信对这些控件不陌生,毕竟这个插件是使用Vue的elementUI扩展实现的。
简单API测试
插件会自动根据接口的参数来生成输入界面,而使用控件默认是依据参数的类型来生成(但也可以指写后面一一介绍)。
public string Hello(string name)
{
return $"hello {name}";
}
以上是一个简单的Hello接口,针对这接口插件的测试界面如下:

测试界面上部分是接口输入部分,点击测试则会自动调用相关Api返回的值。
多参数和标签定义
插件支持多参数和标签定义,通过标签定义可以指定输入UI的显示和默认值的多样性.
public bool Login([Input(Label = "用户名")]string name, [Input(Label = "密码")]string pwd, [Input(Label = "保存状态", Value = true)]bool saveStatus)
{
return name == "admin";
}
以上是一个简单的登陆接口,可以通过Input来指定参数的显示名称,默认值和使用什么类型控件显示等。

数据提交
插件会自动分析参数对象的属性,然后生成相关的输入标签
[Post]
public Employee AddEmploye(Employee emp)
{
return emp;
}
以上是一个简单的雇员信息添加接口,插件为针对这个雇员类生成它对应的属性列表,大致如下:

自定义标签
为了让参数的输入更方便,插件提供标签定义提供更方便的参数输入。
public class GenderInput : InputAttribute
{
public GenderInput()
{
Type = "radio";
} public override object Data => new object[] { new { value = "男", label = "男" }, new { value = "女", label = "女" } };
}
以上是一个性别的单选标签,输入控件使用radio
public class HobbyInput : InputAttribute
{
public HobbyInput()
{
Type = "checkbox";
}
public override object Data => new object[] {
new { value = "打球", label = "打球" },
new { value = "游泳", label = "游泳" },
new { value = "爬山", label = "爬山" },
new { value = "游戏", label = "游戏" }};
}
以上是一个爱好输入的标签,支持多项选择,输入控件为checkbox;接下来把这些标签用于注册的数据结构中
public class RegisterDto
{
[Input(Label = "用户名")]
public string Name { get; set; }
[Input(Label = "邮箱地址")]
public string Email { get; set; }
[GenderInput(Label = "性别")]
public string Gender { get; set; }
[CityInput(Label = "城市")]
public string City { get; set; }
[Input(Label = "密码")]
public string Password { get; set; }
[HobbyInput(Label = "爱好")]
public string[] Hobby { get; set; }
}
[Post]
public RegisterDto Register(RegisterDto register)
{
return register;
}
针对这个注册的测试输入界面如下:

动态数据标签
在参数中很多控件存在多样化的数据,如select,checkbox和radio等,这些控件都有存在着多数据的选择,有很多时候这些数据都是从接口中获取的,接下来要一下如何在标签中定义这些控件的数据源。
public object Orders(
[Input(Type = "select", DataUrl = "/EmployeeSelecter", Label = "雇员")]
int id,
[Input(Type = "select", DataUrl = "/CustomerSelecter", Label = "客户")]
string customerid,
[Input(Label ="页数")]
int index,
[SizeInput(Label ="显示数量")]
int size, IHttpContext context)
{
Func<Order, bool> exp = o => (id == || o.EmployeeID == id)
&& (string.IsNullOrEmpty(customerid) || o.CustomerID == customerid);
int count = DataHelper.Defalut.Orders.Count(exp);
if (size == )
size = ;
int pages = count / size;
if (count % size > )
pages++;
var items = DataHelper.Defalut.Orders.Where(exp).Skip(index * size).Take(size);
return items;
}
以上是一个订单查询接口,接口中有雇员和客户都是来源于服务数据,可能通过标签DataUrl属性来指定数据的来源Url(数据要求,必须包括value和label属性)。

对于插件的使用可以查看相关示例 https://github.com/IKende/BeetleX-Samples/tree/master/Web.ApiDoc
BeetleX.FastHttpApi之测试插件集成的更多相关文章
- IDEA常用快捷键和常用插件集成,持续更新......
用习惯了eclipse,不容易转过来,记一下! 快捷键 psvm: main 方法快捷键 sout :syso快捷键 CTRL+O: 重写父类方法 Ctrl+Alt+V :自动补全返回值 Ctrl+S ...
- 转:基于Jmeter的MQTT测试插件
基于Jmeter的MQTT测试插件-上 1. Jmeter插件简介 Apache JMeter是Apache组织开发的基于Java的压力测试工具.下载 用于对软件做压力测试,它最初被设计用于Web应用 ...
- Padavan老毛子固件:17CE插件集成
Padavan老毛子固件:17CE插件集成 1.老毛子路由设置:系统管理-服务-启动SSH服务器 以下链接下载 "winscp" http://down.orsoon.co ...
- Unity3d官方测试插件学习-单元测试,集成测试
2016/11/27更新:官方的测试工具有许多问题,我修改了一个版本 https://git.oschina.net/Hont/UnitTest_Modifyed 支持切场景,异常不失败等 其实Uni ...
- mydate97时间插件集成jquery插件
1.初始化JS: //把mydate97时间插件集成jquery插件 (function ($) { $.fn.mydatePicker = function (options) { return t ...
- JMeter 阶梯式加压测试插件 Concurrency Thread Group
jmeter阶梯式加压测试:JMeter 阶梯式加压测试插件 Stepping Thread Group 由于Stepping Thread Group插件相对来说过于老旧,已不被官方所推荐. 所以这 ...
- 【】Nessus安全测试插件编写教程
Nessus安全测试插件编写教程 作者:Renaud Deraison 翻译:nixe0n 1.怎样编写一个高效的Nessus安全测试插件 在Nessus安全测试系统中, 所有的安全测试都是由ness ...
- 【解决方案】Myeclipse 10 安装 GIT 插件 集成 步骤 图解
工程开发中,往往要使用到集成GIT ,那么下面说说插件安装步骤 PS:以Myeclipse 10 为例,讲解集成安装步骤. ----------------------main------------ ...
- Restful api测试插件Swagger-UI
现在多数的项目开发中,网站和移动端都需要进行数据交互和对接,这少不了使用REST编写API接口这种场景.例如我目前的工作,移动端交由了另一团队开发,不同开发小组之间就需要以规范和文档作为标准和协作基础 ...
随机推荐
- Serializable中的serialVersionUID是必须的吗
不写serialVersionUID就没有吗 即使不写, jdk反序列化时也会自动检查这个id, 反编译.class文件你也看不到这个值 rpc反序列化 如果使用jdk的方式, 这个必须配置 如果使用 ...
- 分布式Web服务器架构(通俗易通)
最开始,由于某些想法,于是在互联网上搭建了一个网站,这个时候甚至有可能主机都是租借的,但由于这篇文章我们只关注架构的演变历程,因此就假设这个时候已经是托管了一台主机,并且有一定的带宽了,这个时候由于网 ...
- 【网上转载搜罗】本博客花里胡哨(划掉)效果js代码
<canvas class="fireworks" style="position:fixed;left:0;top:0;z-index:99999999;poin ...
- 三分钟学会使用Derby数据库
Derby数据库是一个纯用Java实现的内存数据库,属于Apache的一个开源项目.由于是用Java实现的,所以可以在任何平台上运行:另外一个特点是体积小,免安装,java1.6开始集成了derby数 ...
- VMware虚拟机克隆CentOS6.5后修改网卡
在学习zk伪分布式集群对的时候,第一次注意到克隆虚拟机后修改eth的ip地址,发现ip不是自己修改的ip,进而在询问下发现,当我们第一次登陆查看我们克隆的虚拟机ip时:我们看到的ip不是et ...
- [Golang]字符串拼接方式的性能分析
本文100%由本人(Haoxiang Ma)原创,如需转载请注明出处. 本文写于2019/02/16,基于Go 1.11.至于其他版本的Go SDK,如有出入请自行查阅其他资料. Overview 写 ...
- CC03 iOS推送机制浅析
• ios推送机制 可以通俗的把APNS理解为iOS系统为每个app提供的长连接通道 苹果限制了每个app在后台存活的时间,最重要的目的是为了省电,其次优化内存这些.如果彻彻底底的将app杀死了,服务 ...
- RxJava学习笔记(操作符)
前言 上一篇文章介绍了RxJava的基础知识和简单实现,篇幅已经比较多了,所以把操作符(Operators)相关的内容放在这一篇.有了上一篇文章的基础,相信会比较容易理解操作符相关的内容了. 操作符( ...
- Java 多线程(上)
启动一个多线程 多线程即在同一时间,可以做多件事情,创建多线程有3种方式,分别是继承线程类,实现Runnable接口,匿名类 线程概念 首先要理解进程(Processor)和线程(Thread)的区别 ...
- Nginx_安装
1. 安装步骤 上传nginx上传nginx安装包到linux 安装gcc 1 yum -y install gcc-c++ gcc 查看是否安装gcc: 1 gcc -v 安装依赖库 1 yum - ...