用Go写一个后端接口模拟器

一、需求点

自己有时候写前端的时需要后端接口来实现联调,这个时候必须开启一个后端服务(一般都是在现有的后端服务里添加接口,因此启动很慢,毕竟已经是一个写了很多内容的大项目了),里面得写蛮多代码,很繁琐,而且如果接口数据改了还得修改代码重启,特别是SpringBoot这类很重的框架每次重启都很久;

后续百度了一下也有一些网站提供接口mock功能,但是都是要注册,而且网速巨慢,如果没网了还无法联调;

当然,用的如果是vue、angular之类的框架,它们是可以集成一些工具来实现模拟后端服务的,但是个人觉得不好用,因为它的实时性不好,也不够灵活,还得下载各种依赖什么的,跟前端项目也耦合;

基于上面的需求,用go写了一个跨平台的后端接口模拟器;

目前它支持指定服务地址,可以以项目为接口集,每个项目里又通过配置不同的接口,接口的返回数据又可以单独配置到文件,或者直接写在接口配置里也可以(数据量小的话);

而且支持文件动态监测,发现保存了文件会自动更新配置(目前没有写的很健壮,所以请完整修改配置后再保存,比如你的响应数据别写一半JSON就保存了)

二、使用方式:

我这边自己打包的是Linux平台的,大家可以自行打包为自己需要的平台(搜Go交叉编译,加些环境变量即可,如果不加则打包的就是自己编译所在平台的版本);

如果你有Python3.x,我这边已经写了一个pack.py脚本,运行它就能自动打包到项目的output目录里;(如果你不会的话也可以留言给我我帮你打包好给你)

打包后的zip文件内部结构为:

1.mock-projects目录,里面存放了各个项目的具体配置;

1.1.mock-projects/demo01目录,表示这个是用于配置demo01这个项目的接口集;

1.2.mock-projects/demo01/project.json文件,用于配置demo01这个项目有哪些接口,示例内容如下:

{
  "prefix": "/demo01",
  "APIs": [
    {
      "API": "/test01",
      "responseValue": {
        "name": "silentdoer是否"
      }
    },
    {
      "API": "/test02",
      "responseRef": "responses/test02.json"
    }
  ]
}

其中prefix值表示这个项目的url前缀是什么;APIs则是定义了有哪些具体接口,API是接口子路径,responseValue是表示这个接口的响应数据,而responseRef则是表示接口响应数据的配置文件路径;

1.3.mock-projects/demo01/responses目录存放了demo01项目接口的所有响应内容配置;

2.app.json用来配置有哪些项目,其内容为:

{
  "autoRefresh": true,
  "mockProjects": [
    {
      "name": "demo01ss",
      "path": "mock-projects/demo01"
    }
  ]
}

autoRefresh表示是否需要动态刷新,mockProjects配置所有的项目【可自行增减】;

3.readme.txt,说明文件

4.service_mocker,可执行文件,用于启动服务模拟器(可通过-a 'localhost:8888'参数来修改监听地址);

注意,上面的配置是可以实时更新的,但是要求改完全来再保存,别改一半就保存了,比如加projects,别"path"只写了"pat就保存了,我这边没做这么多的条件判定;

还有就是如果是Linux,最好是用vi来修改,用gedit之类的工具修改不知道为什么文件监听库会出问题。。(以后看看有没有更好的库)

三、项目:

github地址:https://github.com/Silentdoer/service-mocker