关于此mock
服务相关介绍见:https://fugary.com/?p=626
安装运行
- 下载运行:https://github.com/fugary/simple-boot-mock-server/releases 下载最新zip文具
- 下载解压后,
bin\start.bat
运行即可
- 下载解压后,
- Docker运行:
docker run -p 9086:9086 fugary/simple-boot-mock-server:latest
登录使用
默认启动访问:http://localhost:9086
有两个用户admin/12345678
和mock/mock
,登录后第一时间修改密码,新建自己的账户
修改密码
进入个人资料,清空密码,修改自己的密码即可

mock分组
进入mock
分组页面,点击【新增】,每个分组对应一个api
接口组,里面可以有多个请求路径,每个路径可以认为是一个api
接口。

新增,主要填写名【分组名称】就可以了,【路径ID】一般自动生成(需要全局唯一),不过保留手动填写的支持,方便需要手动指定的特殊情况。
注意:代理地址是配置的请求之外的地址将发送到代理地址获取数据,支持http和https,也就是需要使用的真实地址,本地mock这个是不需要填写的

点击【配置】进入子页面配置请求路径

mock请求
一个mock
分组下面可以配置多个mock
请求,处理不同的请求并给出响应,下面三个值唯一定位一个请求
- 请求路径(默认会自动在前面加上
/
) - 请求方法
- 匹配规则
新建请求

保存后可以点击测试:

测试请求
请求测试这块说明:
- 如果在分组时没有配置【代理地址】,只配置请求没有配置响应数据将会得到
404
错误 - 如果在分组时配置了【代理地址】,只配置请求没有配置响应数据将会转发给代理地址,从代理地址获取响应:
- 如果配置了响应数据,将会返回配置的响应数据,下面会介绍如何配置响应数据,将在后面做测试
mock响应数据
响应数据是给当前请求路径配置实际的响应体,支持各种状态码,content type等
新建响应数据
每个请求下面都可以配置多个响应数据,但是只有一个默认请求数据

简单写死配置响应数据很简单,如下图所示:

保存后就可以测试实际响应
注意:这里有两个测试:
- 请求测试时针对请求的,请求下面配置有多个响应数据时,选择第一条,如果指定了默认数据就取默认数据
- 数据测试时针对单个数据的,每个数据测试时返回自己配置的响应数据

因为只有唯一一条数据,请求测试和响应数据测试时响应的数据都一样:

默认响应数据
有多条响应数据的时候可以指定某一条为默认数据,在测试多种响应的时候很有用,比如要测试正常和错误两种响应,可以先配置好两条响应数据,当需要正确数据时,就把正确的那一条设置为默认,如果需要错误的数据时,就把错误那条设置为默认。
【默认标记】与【设置默认按钮】见下图

如果把错误设置为默认,测试如下:

数据复制功能
为了快速添加多条数据,可以直接点击某一条数据的【复制按钮】

数据历史版本
目前mock请求以及mock数据都支持历史版本,每次修改将记录历史版本信息

历史列表数据

可以对比修改的内容:

高级功能
下面介绍下高级功能,如果上面的基本功能不够用,下面有比较多的高级功能,有一定难度
JavaScript支持
目前使用的JavaScript引擎支持ES6语法,比较方便使用高级语法,箭头函数等
Mock.js支持
目前响应数据时支持Mock.js
语法的,使用的就是Mock.js
,不过是通过JDK
的ScriptEngine
调用。
什么是Mock.js
:http://mockjs.com/
Mock.js
文档:https://github.com/nuysoft/Mock/wiki
测试Mock.js
支持:
在刚才的数据中写入Mock.js
支持的格式,这里以生成一些城市数据为例:

测试请求响应如下:

其他JS支持
目前只引入了dayjs
处理日期,可以直接使用dayjs
全局变量。
其他更多JS函数,参考【内置函数】章节
内置函数
新增了几个常用的函数,主要用于数据加解密,方便处理一些加密数据,解析出内容使用,这些函数一般使用Java
实现,并注册到JavaScript
引擎中。
函数签名 | 说明 |
---|---|
decodeHex: (hex: string) => string |
将十六进制字符串解码普通字符串 |
encodeHex: (data: string) => string |
将普通字符串编码为十六进制格式 |
md5Hex: (data: string) => string |
数据MD5 加密,并输出十六进制数据格式 |
md5Base64: (data: string) => string |
数据MD5 加密,并输出Base64 数据格式 |
sha1Hex: (data: string) => string |
数据SHA1 加密,并输出十六进制数据格式 |
sha1Base64: (data: string) => string |
数据SHA1 加密,并输出Base64 数据格式 |
sha256Hex: (data: string) => string |
数据SHA256 加密,并输出十六进制数据格式 |
sha256Base64: (data: string) => string |
数据SHA256 加密,并输出Base64 数据格式 |
btoa: (data: string) => string |
数据编码为Base64 数据格式 |
atob: (data: string) => string |
从Base64 数据格式解码为原始数据 |
encryptAES: (data: string, key: string, options?: AESOptionsType) => string |
数据AES 加密,并输出Base64 数据格式 |
encryptDES: (data: string, key: string, options?: AESOptionsType) => string |
数据DES 加密,并输出Base64 数据格式 |
encrypt3DES: (data: string, key: string, options?: AESOptionsType) => string |
数据3DES 加密,并输出Base64 数据格式 |
encryptSM4: (data: string, key: string, options?: AESOptionsType) => string |
数据SM4 加密,并输出Base64 数据格式 |
encryptRSA: (data: string, key: string, options?: RSAOptionsType) => string |
数据RSA 加密,并输出Base64 数据格式 |
decryptAES: (data: string, key: string, options?: AESOptionsType) => string |
数据AES 解密 |
decryptDES: (data: string, key: string, options?: AESOptionsType) => string |
数据DES 解密 |
decrypt3DES: (data: string, key: string, options?: AESOptionsType) => string |
数据3DES 解密 |
decryptSM4: (data: string, key: string, options?: AESOptionsType) => string |
数据SM4 解密 |
decryptRSA: (data: string, key: string, options?: RSAOptionsType) => string |
数据RSA 解密 |
变量支持
有时候我们可能需要用一些变量替换响应数据,这里没有Mock.js
那么强大,不过不局限于json
响应,可以支持XML
中替换数据,变量支持如下:
request.body
——body
内容对象(仅json
时会解析成对象)request.bodyStr
——body
内容字符串request.headers
——头信息对象request.parameters
——请求参数对象request.pathParameters
——路径参数对象request.params
——请求参数和路径参数对象合并
简单变量替换
比如请求参数中有个name
字段,需要响应中返回回来:

测试如下:

Mock.js变量使用
如果是JSON
的post请求
,可以解析出请求的值,并替换给返回数据:
配置请求:

测试结果:

XML支持
变量等也支持在XML
响应中使用
基本变量支持

测试如下:

Body变量支持
XML
也是支持body
变量的,XML
会被解析成JS
对象,然后用于变量计算

测试如下:

匹配规则
匹配规则是稍微比较复杂的功能,主要是在相同url
和请求方法的情况下,区分不同请求给出不同的响应。
比如这个场景:如果请求参数的orderNo>100
时返回正确正确的数据,否则返回错误的数据
匹配规则使用JS表达式计算,计算结果为真就是匹配,为假就是不匹配
匹配规则和默认响应有冲突,优先按照匹配规则匹配,只要配置有匹配规则不能作为默认响应
这里的匹配规则,支持的变量和前面【变量支持】模块一致:

测试成功:

测试错误:
