1、首次使用Yapi的时候,需要安装cross-request插件,请求是通过本地的cross-request插件发送出去的。
cross-request插件下载安装教程:https://cloud.tencent.com/developer/article/1517980
2、在使用Yapi时,如果遇到点击“发送”按钮之后,页面没有任何反应,接口返回值的Response中没有任何结果,可能就是插件的问题,可以重新安装插件尝试解决。
3、数据 Mock 服务在开发前期是比较棘手的问题。大多数情况下,接口请求参数和返回数据都是后端规定的,在后端接口没有完成之前,接口对于前端就是一个黑洞,可能最初对接口的定义跟实际后端做出的接口会有非常大的不同。这个时候就需要有一个工具,不仅能模拟真实接口的情况,还能关联接口文档,在后端开发过程中,可以随时调整接口定义,并通知给前端开发者改动信息。
在 YApi 平台,前后端只要维护接口定义的响应数据,就可以生成需要的模拟数据,下面这段代码定义了生成数据模板:
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
{
“errcode”: 0,
“errmsg”: “@string”,
“data”: {
“type”:"@pick(1,2,3)",
“list|1-10”: [{
“uid”: “@id”,
“username”: “@name”
}]
}
}
可生成如下的模拟数据:
{
“errcode”: 0,
“errmsg”: “^*!SF)R”,
“data”: {
“type”: 2,
“list”: [
{
“uid”: “370000200707276255”,
“username”: “Ruth Clark”
},
{
“uid”: “650000200211185728”,
“username”: “Anthony Martin”
},
{
“uid”: “370000199201143855”,
“username”: “Laura Rodriguez”
},
{
“uid”: “610000198704072775”,
“username”: “Anthony Perez”
}
]
}
}
以往的数据 mock 方案难免会影响项目源码,yapi 使用了服务器代理的方案,只需要在你的开发机做下服务器反向代理配置,不用修改项目一行源代码,即可获取到所有的 mock 数据。
基础的 Mock 工具已经能满足大部分的需求了,但有些复杂场景是无法实现的。例如:当我做一个数据列表页面,需要测试某个字段在不同长度下以及数据为空时页面交互。YApi 提供了期望和自定义脚本的功能。
4、添加期望
点击【高级Mock】,点击页面中的【添加期望】:
【基本信息】定义发送请求的参数
【响应】定义发送请求参数对应的返回信息
添加后默认为开启状态:
此时,发送请求,其中参数:BuildEnv=daily,得到在期望中配置的响应
可以根据不同的参数,设置不同的响应,配置多条期望:
5、脚本
也可以使用自定义Mock脚本来配置不同的参数请求返回相应不同的响应。
在高级Mock页面选择【脚本】,并开启。
上面设置的第一个期望,等同于如下Mock脚本:
if(params.BuildEnv == ‘daily’){
mockJson={
test_build:1,
message:‘mock脚本,通过!’
}
}
编辑之后,点击【保存】(注意先关闭期望中的配置,Yapi中mock优先级期望>脚本),然后发送请求
同样,脚本中可以添加多条这样的数据,实现不同的响应
var test_env = [‘test1’,‘test2’,‘test3’,‘test4’,‘test5’,‘test6’,‘test7’,‘test8’,‘prod’,‘app’,‘h5’,‘daily’]
var build_server = [‘jianlc-web’,‘jianlc-boss’,‘jianlc-api’,‘jianlc-open-api’,‘jianlc-activity’,‘jianlc-msg’,‘jianlc-service’,‘jianlc-thirdpaty’]
if(params.BuildEnv === ‘’){
mockJson={
test_build:0,
message:Random.csentence()
}
}
if(params.BuildEnv == ‘daily’){
mockJson={
test_build:1,
message:Random.csentence()
}
}
if(test_env.includes(params.BuildEnv) && params.BuildPerson == ‘admin’){
mockJson={
test_build:1,
message:‘管理员允许发布’
}
}
if(params.BuildEnv == ‘app’ && params.BuildPerson == ‘xiaoming’){
mockJson={
test_build:1,
message:‘允许发布’
}
}
if(params.BuildEnv == ‘app’ && params.BuildPerson != ‘xiaoming’){
mockJson={
test_build:0,
message:‘发布人员无效’
}
}
if(test_env.includes(params.BuildEnv) === false){
mockJson={
test_build:0,
message:‘部署环境未登记,不允许发布!’
}
}
if(test_env.includes(params.BuildEnv) && params.BuildEnv != ‘daily’ && params.BuildPerson == ‘xiaoming’ && build_server.includes(params.BuildServer)){
mockJson={
test_build:1,
message:‘允许发布!’
}
}
if(test_env.includes(params.BuildEnv) && params.BuildEnv != ‘daily’ && params.BuildPerson != ‘xiaoming’&& params.BuildPerson != ‘admin’ && build_server.includes(params.BuildServer)){
mockJson={
test_build:0,
message:‘环境登记信息有误,不允许发布!’
}
}
参见:https://www.jianshu.com/p/b617e160c005
参考:https://blog.csdn.net/weixin_44096512/article/details/96438970