zoukankan      html  css  js  c++  java
  • 用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

  • 相关阅读:
    ansible部署apache
    yum换源,rpm包下载,源码包安装
    zabbix 监控apache
    分块大法 -- 优雅的暴力
    [每日一题]:建立联系 -- 最小生成树
    [每日一题]:P1016 旅行家的预算 -- 反悔贪心
    [每日一题]:[NOIP2010]关押罪犯 -- 并查集
    Python基础: 元组的基本使用
    Python基础: 列表的基本使用
    Python基础:分支、循环、函数
  • 原文地址:https://www.cnblogs.com/silentdoer/p/13019931.html
Copyright © 2011-2022 走看看