Yapi接口平台个人总结

article/2025/9/22 21:36:33

 

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等类似协议接口无法测试;

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


http://chatgpt.dhexx.cn/article/xLaflKme.shtml

相关文章

百度ai平台接口使用记录

前一段时间在做毕业设计,打算做一些风格转换相关的项目,想自己制作一份数据集用于训练,于是发现了百度ai平台提供的api接口可以实现“人脸动漫化”、“图像风格转换”等功能。按照一定步骤操作后,只要通过post请求就可以将本地的图…

API接口管理平台源码thinkPHP

API接口管理平台源码thinkPHP 安装步骤: 1.数据库信息配置在路径【config/database.php】文件中 2.导入根目录下的【data.sql】数据库文件 3.设置网站运行目录为根目录【public】 4.目录 后台地址 /admin/login.html 账户 admin 密码 123456 测试截图 后台截…

通用接口开放平台设计与实现——(2)功能架构

前面说过,接口开放平台主要有两部分功能组成,一是处于主体地位的API接口,对外提供数据服务;二是处于辅助角色的消息服务,用于通知数据变动。 实际上,客观上还需要平台自身管理功能,来维护平台的…

接口测试平台(一)

需求描述: 测试的项目使用内部加密的算法,普通的接口测试测试工具(Jmeter/PostMan/HttpRequest)不能满足,同时满足接口的自动化测试,用例集为1个业务场景为单位进行测试。请求方式中多一种post加密,同时数据比较多结构…

2022盘点工作室常用的API数据接口开发平台

果创云 果创云(http://YesApi.cn),是一个低代码数据接口开发平台,为工作室提供“开箱即用”的数据API接口。 当工作室需要开发自己的小项目、脚本、小程序、管理后台时,可以使用果创云低代码接口平台,快速…

超强接口协作平台如何打造:细数Apifox的六把武器

前言:推荐一款免费而强大的接口协作工具,感兴趣的小伙伴儿自行前往官网尝鲜 1 关于接口协作平台的畅想 软件界发展至今,API(接口)的重要性日益凸显——不同的端,不同的模块都在通过API交互,不…

python 调用企查查接口平台

一、需求: 通过内部系统导出企业信息数据后,筛选状态为“正常”的企业数据。然后拿筛选后的企业去查询该企业的工商数据。 开始是在国家企业信息公示系统中查询,由于查询数据量过大,后改用从企查查接口平台,通过接口获…

Mock.js数据模拟,rap2、postman可视化接口平台,Vue框架的接口链接应用

前言: 作为一名前端程序员,其工作不仅仅是制作出精美的界面,实现页面之间的顺利转跳,各种交互。最主要的工作就是将后端所提供的数据通过合理地接收,应用在页面上,呈现在用户面前,从而使用户能…

IDEA开发工具整合YAPI接口平台

IDEA开发工具整合YAPI接口平台 目录 1 前提 1.1 代码规范 1.2 注释模板需统一 2 使用YapiUpload插件 2.1 下载YapiUpload插件 ​2.2 配置 2.3 idea代码中添加注释 ​2.4 idea推送到YAPI 3 使用EasyYApi插件 3.1 下载…

十大api接口平台(接口商)

一、百度api集市 1136个数据服务接口 网址:http://apistore.baidu.com/ 二、聚合 144个数据服务接口 网址:https://www.juhe.cn/ 三、华付数据 32个实用的数据服务接口,以精准,稳定在行业立足。 网址:http://h…

统一接口平台

1产品介绍 前端应用系统通过统一接口平台获取数据,不直接与外部系统接口打交道。统一接口平台通过多种方式与外部系统联接获取数据并向各前端应用系统提供各种数据格式包,将外部系统有效地隔离在业务系统之外。前端应用系统需要请求的外部接口需要在统一…

接口开放平台,我的一些思考

1. 概述 接口开放平台,为访问者提供统一的URL作为唯一访问入口,参数中指定具体接口标识和接口参数。它的优点包括接口规范性、效率、管理能力。接口开放平台可以分为简单的和复杂的两种方式。简单的接口开放平台,由自身提供接口实现。复杂的…

通用接口开放平台设计与实现——(1)开篇

首先简单聊下背景,大概是几年前,工作中遇到这么一个复杂的应用场景,大型企业中的物流系统,需要跟众多的内外部系统交互,对接的系统达到十几个,接口数量在50个左右,并且后续还会大量增加新的对接…

六大接口管理平台,总有一款适合你的!

前后端分离绕不开的接口测试 先聊一聊前端和后端分离的优点。前后端分离优点如下: 真正的实现前后端解耦,前端服务器使用 nginx;易于发现bug,可以快速定位是谁的问题,不会出现互相踢皮球的现象;减少后端服…

2022中国十大API接口服务平台排行榜(推荐五颗星)

Api接口也就是所谓的应用程序接口,api接口的全称是Application Program Interface,通过API接口可以实现计算机软件之间的相互通信,开发人员可以通过API接口程序开发应用程序,可以减少编写无用程序,减轻编程任务&#x…

python基础教程:startswith()和endswith()的用法

startswith()方法 Python startswith() 方法用于检查字符串是否是以指定子字符串开头如果是则返回 True,否则返回 False。如果参数 beg 和 end 指定值,则在指定范围内检查。str.startswith(str, beg0,endlen(string)); 参数 str --检测的字符串。strbeg …

C# 为什么要用StartsWith而不是Substring进行字符串匹配?

字符串的截取匹配操作在开发中非常常见,比如下面这个示例:我要匹配查找出来字符串数组中以“abc”开头的字符串并打印,我下面分别用了两种方式实现,代码如下: using System;namespace ConsoleApp23 {class Program{sta…

C# 为什么高手喜欢用StartsWith而不是Substring进行字符串匹配?

字符串的截取匹配操作在开发中非常常见,比如下面这个示例:我要匹配查找出来字符串数组中以“abc”开头的字符串并打印,我下面分别用了两种方式实现,代码如下: using System;namespace ConsoleApp23 {class Program{sta…

startsWith(),endsWith()的作用和用法

startsWith(),endsWith()的作用,用法,判断字符串a是不是以字符串b开头或结尾 Java代码 if(a.startsWith(b)) //判断字符串a 是不是以字符串b开头. Java代码 if(a.endsWith(b)) //判断字符串a 是不是以字符串b结尾. 一个demo测试 Java…

[PYTHON] python中startswith函数用法

一、当不确定python中某一函数是做什么用的可以进入函数里面分析它的源码 大致意思就是:如果prefix在S中以start开头,以end结尾,返回结果为True,否则返回False 由上得知,其语法如下: S.startswith(prefix[,…