最新simple-boot-mock-server服务升级

最近公司需要用到mock服务,想起以前开发的simple-boot-mock-server,已经有几年了,当时是疫情时在家办公有些第三方服务调用不了,自己开发了一个小mock工具,处理简单的请求响应数据,如果只是前端mockmockjs就够用,但大多数时候需要后端mock,除了返回json,还需要返回xml等。以前有个fastmock服务,因为某些原因关闭了,自己开发定制更加适合自己使用场景。

主要功能需求

  1. mock部分请求
    1. 公司里面很多时候并不是需要mock所有api,只需要mock部分api,比如一个api有很多功能,可能只需要mock预订和取消,查询、验价等更多功能并不需要
    2. 我们可能只配置了一个地址,不同接口根据url路径分发,要mock部分接口的话就要把其他接口转发给原地址
  2. 支持jsonxml等返回数据
    1. 对接接口很多,有xmljson等常规数据,还有SOAP协议数据
    2. mock服务并不关心数据,只需要配置什么数据就返回什么数据
  3. 多种匹配规则
    1. 公司对接接口很多,有些使用同一个urlget模式处理所有请求并响应数据,因此需要根据请求参数不同来判断是什么接口,并实现mock
    2. 需要支持请求参数、请求体、路径参数、甚至头信息计算匹配请求

实现技术栈

基于Spring Boot开发的Mock数据服务器,主要要两个项目:

  1. 后台服务simple-boot-mock-server
  2. UI界面simple-boot-mock-newui(Vue3)

最后打包的时候合并到一个项目中,成为一个jar包,最后打包成为一个zip文件,加压运行即可。

源码:https://github.com/fugary/simple-boot-mock-server

后端框架

  1. Spring Boot
  2. Mybatis、MybatisPlus
  3. Lombok
  4. Logback
  5. FlywayDB
  6. ScriptEngine(JDK自带)
  7. JWT

前端系统

基于自己对element-plus的二次封装:https://github.com/fugary/simple-element-plus-template

  1. Vue3全家桶
  2. element-plus
  3. dayjs
  4. lodash-es
  5. monaco-editor、vue-monaco-editor——主要文本编辑器

运行介绍

从最新releases地址下载之后,解压后点击start.bat即可基于文件数据库H2运行,自动产生数据库文件,下载地址:

https://github.com/fugary/simple-boot-mock-server/releases/

结构介绍

目录结构:

/xxxx.jar——可执行jar,可用java -jar命令启动,也可以直接用start.bat启动

/data——H2数据库文件(运行后产生),可以支持配置MySQL数据

/config——application.yml配置文件

/bin——start.bat和start.sh启动文件

/logs——日志输出目录(运行后产生)

功能介绍

  1. 模拟分组,每个分组可以配置多个请求链接,支持配置代理地址
  2. 模拟请求预览,支持URL参数,请求参数,请求头信息、请求体等预览和保存
    1. 预览同时会保存请求相关参数,方便本地测试
    2. 预览使用monaco-editor编辑请求体
  3. 支持响应内容用请求参数替换,参数用{{}}包裹
    1. 如链接中有参数:/mock/xxxxx/request?id=xyz
    2. 输出可以有{"id": "{{request.parameters.id}}"}
  4. 可以配置多个响应输出,指定一个作为默认输出。方便在不改变URL的情况下模拟成功、失败等多种情况
  5. 支持mockjs语法(直接使用mockjs解析执行)
  6. 快速复制URL、响应内容等
  7. 支持重定向链接
    1. 响应里面配置重定向的URL
    2. 配置Status Code为302
  8. 支持作为反向代理,代理URL地址,可以只mock部分请求,其他请求发送给代理url地址获取响应
  9. 除了支持URL路径和请求方法匹配,新增支持匹配表达式,可以根据request内容匹配请求
    1. request.body——body内容对象(仅json时会解析成对象)
    2. request.bodyStr——body内容字符串
    3. request.headers——头信息对象
    4. request.parameters——请求参数对象
    5. request.pathParameters——路径参数对象
  10. 支持匹配表达式测试功能,方便测试表达式是否正确
  11. 增加响应延迟,可以模拟延迟一段时间才响应数据
  12. 支持简单用户管理,默认账号:admin/12345678mock/mock两个用户,支持修改密码,使用SHA256加密算法
  13. 各用户管理自己的mock分组数据,管理员可以看到其他人的数据
  14. 除了H2数据库,增加MySQL数据库支持

Docker支持

已发布到docker服务,地址:https://hub.docker.com/r/fugary/simple-boot-mock-server

Docker运行

docker运行相对比较简单,只要已经安装好docker,直接使用命令就可以自动拉去镜像并运行了

docker run -p 9086:9086 fugary/simple-boot-mock-server:latest

docker run -p 9086:9086 fugary/simple-boot-mock-server:latest
Unable to find image 'fugary/simple-boot-mock-server:latest' locally
latest: Pulling from fugary/simple-boot-mock-server
f7dab3ab2d6e: Already exists
fca324c253e8: Already exists
108280b9f610: Already exists
8a2821847d87: Pull complete
Digest: sha256:9ab82f00b9e778aea28024c87687d81086173e39a59d72bb5a0a33d78a9d441c
Status: Downloaded newer image for fugary/simple-boot-mock-server:latest

启动后可以通过:http://localhost:9086 访问,账号:admin/12345678mock/mock,可以自行增减用户和修改密码。

注意:mock服务链接没有安全性控制,属于公开链接

Docker环境变量

服务有不少环境变量可以配置,支持配置成MySQL

环境变量名 默认值 说明
MOCK_DB_TYPE h2 数据库类型,支持:h2、mysql
MOCK_DB_USERNAME root 数据库用户名(h2/mysql共用)
MOCK_DB_PASSWORD 123456/12345678 数据库密码(h2/mysql共用)
MOCK_DB_H2_CONSOLE false 是否开启h2数据库的控制台
MOCK_DB_POOL_SIZE 5 连接池大小
MOCK_DB_DATA_DIR /data h2的数据目录
MOCK_DB_MYSQL_SERVER localhost MySQL服务器地址(MOCK_DB_TYPE=mysql时有效)
MOCK_DB_MYSQL_PORT 3306 MySQL端口(MOCK_DB_TYPE=mysql时有效)
MOCK_DB_MYSQL_DBNAME mock-db MySQL数据库名(MOCK_DB_TYPE=mysql时有效)
需要自行先建立数据库
MOCK_LOG_DIR logs 日志目录

给TA打赏
共{{data.count}}人
人已打赏
运维

注意:最近假Z-Library网站疯狂生长

2024-11-19 10:39:02

运维

简单mock服务simple-boot-mock-server如何使用

2024-11-19 10:39:05

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索