0%

接口mock平台

​ 接口Mock平台主要实践在项目的开发团队太多,业务需要对接各个下层服务,而下层服务提供的API时间线的偏差,往往需要Mock接口提供给需求方(前端),进行联调,提高交付质量。最后再由我们去对接下层服务来保证交付质量,同时下层服务也需要提供mock来格式化响应参数,但是往往省略这部分工作导致接口文档可用性太低。

1、Yapi

去哪儿网大前端技术中心 开源的项目

官方文档:https://hellosean1025.github.io/yapi/documents/index.html

github:https://github.com/ymfe/yapi

1、界面介绍:

​ 请求 Mock 数据时,规则匹配优先级:Mock 期望 > 自定义 Mock 脚本 > 项目全局 mock 脚本 > 普通 Mock。如果前面匹配到 Mock 数据,后面 Mock 则不返回。

1、预览界面

​ 大概介绍,无其他用处,唯一用处就是接口Mock

image-20210302154158151

2、编辑界面功能 (优先级 level-3)

1、特点

这个是数据Mock,支持基本的语法,这个语法来自于 Mock数据占位符定义规范 DPD , 他支持调用 Mock.Random 的任何方法,比如调用 Random.datetime('yy-MM-dd a HH:mm:ss'), 你只需要写 @data('yy-MM-dd a HH:mm:ss') 即可

2、适用场景

  • 比较适用于请求参数的Mock
  • 响应字段不复杂,没有复杂的数组结构,不需要定制化处理

image-20210302154310392

3、运行页面

1、特点

  • 支持多种环境的支持

image-20210302160252752

  • 支持测试mock接口
  • 支持调试大部分环境

image-20210302155910968

2、适用场景

  • 接口调试(但是无历史记录,这个比较坑)
  • 和配置进行比较

4、高级Mock-期望 (优先级最高-level 1)

1、特点

可以对于数据的响应进行期望值设定,完全支持Mock.js 的语法,语法文档: http://mockjs.com/examples.html

2、适用场景

  • 对于数据mock需要定制化处理的,比如我们需要将list进行指定mock
  • 但是它不适合对于数据进行脚本处理,比如要对于请求参数进行校验等等
  • 可以对于响应时长进行mock
  • 可以对于

例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
{
"code": 0,
"message": "success",
"data": {
"list|40-50": [
{
"worker_name": "@cname",
"id": "@integer(0)",
"create_time": "@date('yyyy-MM-dd HH-mm-ss')",
"status": "@integer(1,4)",
"discover_place": "@city"
}
],
"nums_list": [
{
"status": 1,
"num": "@integer(1,1000)"
},
{
"status": 2,
"num": "@integer(1,1000)"
},
{
"status": 3,
"num": "@integer(1,1000)"
},
{
"status": 3,
"num": "@integer(1,1000)"
}
],
"page_index": 1,
"page_size": 10,
"total_count": 50,
"is_more": 1
}
}

image-20210302160421417

5、高级Mock - 脚本 (优先级 level-2)

1、特点

脚本带来的强大功能,可以各种定制化处理,比如说请求参数,比如说请求头等等,比如说各种逻辑判断

请求

  • header 请求的 HTTP 头
  • params 请求参数,包括 Body、Query 中所有参数
  • cookie 请求带的 Cookies

响应

  • mockJson 接口定义的响应数据 Mock 模板
  • resHeader 响应的 HTTP 头
  • httpCode 响应的 HTTP 状态码
  • delay Mock 响应延时,单位为 ms
  • Random Mock.Random 方法,可以添加自定义占位符,详细使用方法请查看 Wiki

2、使用场景

  • 响应结果需要对于请求参数有依赖的

demo

1
2
3
4
5
6
7
8
9
10
11
let data=[]

for (let x =0 ; x<100;x++){
data[x]={
name:Random.string(),
}
}

mockJson={
list: data
}

image-20210302160849535

2、语法介绍

英文(中文前缀为c,例如cfirst)名字:Random.first()

英文性:Random.last()

全名字:Random.name()

随机的时间搓(ms):Random.datetime(‘T’)

随机日期:Random.datetime(‘yyyy-MM-dd HH:mm:ss’)

随机时间:Random.now(‘yyyy-MM-dd HH:mm:ss’)

随机文本:Random.csentence(length)

随机的http-url: Random.url(‘http’, ‘nuysoft.com’)

随机的ip: Random.ip()

随机的email: Random.email(‘nuysoft.com’) ,Random.email()

随机的地址: 随机城市:Random.city(true) 随机县城:Random.county(true) 随机省份:Random.province()

UUID: Random.guid()

随机身份证:Random.id()

随机数:Random.range(1, 10, 2)

随机英文串串:Random.string( 5 )

随机bool:Random.bool()

本人坚持原创技术分享,如果你觉得文章对您有用,请随意打赏! 如果有需要咨询的请发送到我的邮箱!