Yapi接口平台个人总结

 

YApi是去哪儿移动架构组开源的API管理系统,是一款api管理平台。

一,yapi相关信息与教程

官网地址:https://yapi.ymfe.org/

示例地址:http://yapi.demo.qunar.com/

使用教程:https://hellosean1025.github.io/yapi

 

二,插件安装:

cross-request_v3.0,谷歌插件:cross-request_v3.0   下载后安装到谷歌浏览器即可:

安装流程:

a,下载,解压;

b,chrome 输入 chrome://extensions 打开扩展页;

c,开启开发者模式;

d,加载已解压的程序源,即可看到如下页面;

使用:点击 cross-request 背景页, 打开 network 就能看到新发起的请求信息

 

 

三,mock使用

Mockjs脚本编写:http://mockjs.com/examples.html

 

1,常用占位符功能详述

@integer(min?, max?)

返回一个随机的整数。

  • min:可选参数,整数最小值。
  • max:可选参数,整数最大值。

例:

@integer
//--> 1686805249110932
@integer(10,100)
//--> 26

@float( min?, max?, dmin?, dmax? )

返回一个随机浮点数。

  • min:可选,整数部分最小值。
  • max:可选,整数部分最大值。
  • dmin:可选,小数部分最小长度。
  • dmax:可选,小数部分最大长度。

例:

@float
//--> 1924364975802932.5
@float(60, 100, 2, 6)
//--> 68.1258

@string

返回随机字串,有如下几种使用方式:

@string
@string(length)
@string(pool, length)
@string(min, max)
@string(pool, min, max)
  • length: 字串长度
  • min: 字串最短长度
  • max: 字串最大长度
  • pool:表示字符池。如果传入 'lower'、'upper'、'number'或'symbol',表示从内置的字符池从选取。对应关系如下:
lower: "abcdefghijklmnopqrstuvwxyz",
upper: "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
number: "0123456789",
symbol: "!@#$%^&*()[]"

例:

@string(6)
//--> kV(qj4
@string('upper',2,6)
//--> NJKU
@string('123abc!@#', 2,6)
//--> #ab!21

@url(protocol?, host?)

随机生成一个 URL。

  • protocol:指定 URL 协议。例如 http。
  • host:指定URL域名和端口号。

例:

@url('https', '123.sogou.com')
//--> https://123.sogou.com/ccdkttr

@ip

随机生成一个IP地址。

@timestamp

返回当前unix时间戳

@datetime(format?)

返回一个随机的日期和时间字符串。

  • format:生成的日期和时间字符串的格式。默认值为yyyy-MM-dd HH:mm:ss。

例:

@datetime()
//--> 1977-11-17 03:50:15
@datetime('y-M-d H:m:s')
//--> 02-4-23 2:49:40

@pick(arr)

从数组中随机选取一个元素,并返回。

例:

@pick(['this', 'is', 'picker', 'test'])
//--> picker

其他常规就不详细写了,看官方文档或者百度下你啥都知道

 

2,Pre-request Script脚本再项目中的应用

引用global中的变量---context.storage.sign;

 

a,获取sign,signed_at,   pre设置可直接引用不用添加

 


 

console.log(context)

try{
var commonParams = {}
//秘钥
var secretKey = "111111111111111111";
console.debug("secretKey:" + secretKey);

//设置请求时间戳
var signed_at = Math.round(new Date().getTime()/1000);
commonParams.signed_at = signed_at

console.debug("signed_at:" + signed_at);

//请求参数
var data = context.method === 'POST' ? context.requestBody : context.query;

data = Object.assign({
signed_at: signed_at
}, data)

//GET
// if(context.query instanceof Object){
// context.query.each(function(obj){
// if(obj.disabled === undefined) data[obj.key] = obj.value;
// });
// }
//POST
// if(context.requestBody instanceof Object){
// context.requestBody.each(function(obj){
// if(obj.disabled === undefined) data[obj.key] = obj.value;
// });
// }

console.debug("data:" + JSON.stringify(data));

//参数排序
var params = [];
for(var key in data){
if(key != "sign") params.push(key);
}
params.sort();
console.debug("params:" + params);
console.log(params)
//拼装字符串
var str = '';
params.forEach(function(value){
str += value;
data[value] = data[value] ? data[value].toString() : "";
//if(data[value].indexOf("{{")!= -1){
// str += data[value].replace(new RegExp('(\{|\})', "g"),"");
//}
//else{
str += data[value];
//}
});

console.log(str)

str = secretKey + str + secretKey;
console.debug("str:" + str);

//生成签名

var sign = context.utils.md5(str).toString();

commonParams.sign = sign;

if (context.method === 'POST') {
context.requestBody = Object.assign( commonParams, context.requestBody) 
} else {
context.query = Object.assign( commonParams, context.query) 
}

}catch(err){
console.error("Pre-Request Script " + err.name + ":" + err.message);
}



b,mockserver,基础使用

生成mock数据

 


四,YAPI优缺点

优点

颜值高;安装简便;集成WIKI、接口编写、接口自动化测试于一体,更新非常及时;支持权限管理;支持swagger等其他API管理工具的格式数据导入;支持LDAP、SSO、CAS等登录方式;支持集群。

 

缺点

(1)接口返回值只能设置一个模板

有时候我们希望正确返回设置一个模板、错误返回设置一个模板,这是swagger可以做到的,而YAPI无法做到

(2)接口模板必须复制粘贴

不像swagger解耦合一样,一处配置处处运行,例如配置“分页模板”,然后每个分页只需要引用一下就好了,修改起来只需要修改一次。而YAPI目前只有复制粘贴。

已经有人提issue了:

(3)测试功能太鸡肋

只能做冒烟测试,给数据、返回期望数据。无法编写测试逻辑(如果返回XX则跳到XX),无法返回多个值(如果200则XX,如果404则XX),也就无法编写单元测试了。

 

五,总结

个人+会议总结

 

yapi接口管理平台探讨--会议记录

    简单总结会议:yapi接口管理平台,在开发偏敏捷的情况下,对接口的规范性,前后端联调便捷性,冒烟测试、线上回归,起到了积极作用,但对于测试来说,测试功能比较鸡肋。

 

该平台的帮助:

        1,mockserver方案:解决前期模拟测试数据,便于调试;

        2,服务端接口开发:规范后台api文档,丰富了开发自测方案,间接提高开发质量;

        3,前后端联调:减少联调沟通成本;

        4,测试方面:更好的进行接口测试,接口冒烟测试,以及线上验收测试;

  

目前来看存在的问题有如下几个方面:

       1,文档管理方面:接口历史文档查看和管理,无法操作;

       2,接口关联性方面:接口返回数据的获取和下一个接口使用,不易用;

       3,变量管理+前置脚本调试方面:前置脚本sign或其他参数获取,做为公共变量或私有变量传递,不易用;

       4,版本管理:目前tag更多的是标签作用;

       5,自动化方面:异常用例管理和编写,局限性过大,不易进行;

       6,协议局限性:websocket等类似协议接口无法测试;

以上为,会议简要总结,有问题可随时沟通;

  • 2
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值