Easy-Mock接口管理平台

Easy-Mock源项目地址

Gitee镜像项目地址

docker-compose部署

gitee国内docker-compose部署

1.简述

Easy-Mock是一个可视化,并且能快速生成模拟数据的持久化服务。可通过规则模拟生成数据进行调试。同时,提供在线接口调试功能。


2.特性

  • 支持接口代理
  • 支持快捷键操作
  • 支持协同编辑
  • 支持团队项目
  • 支持 RESTful
  • 支持Swagger| OpenAPI Specification (1.2&2.0&3.0)
  • 基于 Swagger 快速创建项目
  • 支持显示接口入参与返回值
  • 支持显示实体类
  • 支持灵活性与扩展性更高的响应式数据开发
  • 支持自定义响应配置(例:status/headers/cookies)
  • 支持 Mock.js 语法
  • 支持 restc 方式的接口预览

3.Easy-Mock安装

Easy-Mock源项目地址

Gitee镜像项目地址

可以通过拉取该项目代码仓到本地运行

$ git clone https://github.com/easy-mock/easy-mock.git
$ cd easy-mock && npm install
$ npm run dev

其中,相关依赖软件必须安装 Node.jsv8.x, 不支持 v10.x)& MongoDB>= v3.4)& Redis>= v4.0

配置文件

找到 config/default.json,或者创建一个 config/local.json 文件,将如下需要替换的字段换成自己的配置即可。

不同环境会加载不同的配置文件,在此之前你应该对 node-config 有所了解。

{
  "port": 7300,
  "host": "0.0.0.0",
  "pageSize": 30,
  "proxy": false,
  "db": "mongodb://localhost/easy-mock",
  "unsplashClientId": "",
  "redis": {
    "keyPrefix": "[Easy Mock]",
    "port": 6379,
    "host": "localhost",
    "password": "",
    "db": 0
  },
  "blackList": {
    "projects": [], // projectId,例:"5a4495e16ef711102113e500"
    "ips": [] // ip,例:"127.0.0.1"
  },
  "rateLimit": { // https://github.com/koajs/ratelimit
    "max": 1000,
    "duration": 1000
  },
  "jwt": {
    "expire": "14 days",
    "secret": "shared-secret"
  },
  "upload": {
    "types": [".jpg", ".jpeg", ".png", ".gif", ".json", ".yml", ".yaml"],
    "size": 5242880,
    "dir": "../public/upload",
    "expire": {
      "types": [".json", ".yml", ".yaml"],
      "day": -1
    }
  },
  "ldap": {
    "server": "", // 设置 server 代表启用 LDAP 登录。例:"ldap://localhost:389" 或 "ldaps://localhost:389"(使用 SSL)
    "bindDN": "", // 用户名,例:"cn=admin,dc=example,dc=com"
    "password": "",
    "filter": {
      "base": "", // 查询用户的路径,例:"dc=example,dc=com"
      "attributeName": "" // 查询字段,例:"mail"
    }
  },
  "fe": {
    "copyright": "",
    "storageNamespace": "easy-mock_",
    "timeout": 25000,
    "publicPath": "/dist/"
  }
}

背景图配置:

登录页的背景图服务目前支持 UnsplashBing

如果 unsplashClientId 配置留空,默认由 Bing 提供服务。

注意:

  • publicPath 默认是 '/dist/'。如有需要,可以将其替换成自己的 CDN;
  • 关于 fe 的配置,一旦发生改变应该重新执行 build 命令。

Docker-Compose部署

docker-compose部署

gitee国内docker-compose部署

通过拉取上述代码仓文件,安装docker-compose,在Dockerfile目录下使用

$ docker-compose up -d #部署启动项目
$ docker-compose start #启动容器
$ docker-compose status #检查状态
$ docker-compose stop #停止容器

若无特殊修改,登录地址是http://127.0.0.1:7300


4.Easy-Mock简单快速使用

登录后,新建项目,填写对应的信息

Swagger-API导入

在项目设置中,填写swagger的文档地址,或保存为json格式上传。

基于 Swagger 创建的项目,会有以下几种能力。

  • 创建时会匹配状态为 200 的响应数据,生成相应的 Class Model,这样可以节省我们创建实体类的时间。
  • 支持查看 请求参数响应参数(前提是 Swagger 文档有定义这些字段)。

获取 Swagger Docs API

进入 文档首页 获取文档接口地址

下面以 Swagger 官方演示项目 Petstore 为例。如图所示,红框标注部分就是文档的接口地址,我们只需要在 创建项目 的时候,在 Swagger Docs API 一栏填写上即可。

由于版本问题,也许你会看到这样的文档首页。不要紧,复制如下地址即可。

如果不确定接口地址对不对?将地址复制到浏览器上打开,看看内容是否跟以下内容相似(注意:不同版本,接口内容是不同的,但可以大致判断出)。

{
  "apiVersion": "1.0",
  "swaggerVersion": "1.2",
  "info": {
    "description": "api list",
    "termsOfServiceUrl": "http://www.example/api-docs",
    "title": "api"
  },
  "apis": [
    {
      "description": "用户相关",
      "path": "/user",
      "position": 0
    },
    {
      "description": "图片相关",
      "path": "imgs",
      "position": 0
    }
  ]
}

在线调用调试接口

点击查看按钮,即可进入调试界面进行调试。

API接口mock数据

基础语法

Easy Mock 引入了 Mock.js,下面只提供部分语法展示。更详尽的用例及文档请参考 Mock.js 官网。

  • 支持生成随机的文本、数字、布尔值、日期、邮箱、链接、图片、颜色等
  • 支持扩展更多数据类型,支持自定义函数和正则
{
  "string|1-10": "★",
  "string2|3": "★★",
  "number|+1": 202,
  "number2|1-100.1-10": 1,
  "boolean|1": true,
  "regexp": /[a-z][A-Z][0-9]/,
  "absolutePath": "@/string @/user/name",
  "user": {
    "name": "demo"
  },
  "object|2": {
    "310000": "上海市",
    "320000": "江苏省"
  },
  "array|1": [ "AMD" ]
}

上面只展示了最基本的语法,如果你不明白为何要这样定义?请阅读 Mock.js 文档。 下面是生成的随机数据,会随请求发生改变。

{
  "string": "★",
  "string2": "★★★★★★",
  "number": 202,
  "number2": 71.73566,
  "boolean": false,
  "regexp": "qS8",
  "absolutePath": "★ demo",
  "user": {
    "name": "demo"
  },
  "object": {
    "310000": "上海市",
    "320000": "江苏省"
  },
  "array": "AMD"
}

数据占位符

掌握 数据占位符 可以让你的随机数据更真实。

{
  "string|1-2": "@string",
  "integer": "@integer(10, 30)",
  "float": "@float(60, 100, 2, 2)",
  "boolean": "@boolean",
  "date": "@date(yyyy-MM-dd)",
  "datetime": "@datetime",
  "now": "@now",
  "url": "@url",
  "email": "@email",
  "region": "@region",
  "city": "@city",
  "province": "@province",
  "county": "@county",
  "upper": "@upper(@title)",
  "guid": "@guid",
  "id": "@id",
  "image": "@image(200x200)",
  "title": "@title",
  "cparagraph": "@cparagraph",
  "csentence": "@csentence",
  "range": "@range(2, 10)"
}

上面只展示了些基本的占位符,如果你想了解更多?请阅读 Mock.js 文档。 下面是生成的随机数据,会随请求发生改变。

{
  "string": "&b(V",
  "integer": 29,
  "float": 65.93,
  "boolean": true,
  "date": "2013-02-05",
  "datetime": "1983-09-13 16:25:29",
  "now": "2017-08-12 01:16:03",
  "url": "cid://vqdwk.nc/iqffqrjzqa",
  "email": "u.ianef@hcmc.bv",
  "region": "华南",
  "city": "通化市",
  "province": "陕西省",
  "county": "嵊州市",
  "upper": "DGWVCCRR TLGZN XSFVHZPF TUJ",
  "guid": "c09c7F2b-0AEF-B2E8-74ba-E1efC0FecEeA",
  "id": "650000201405028485",
  "image": "http://dummyimage.com/200x200",
  "title": "Orjac Kwovfiq Axtwjlop Xoggxbxbw",
  "cparagraph": "他明林决每别精与界受部因第方。习压直型示多性子主求求际后世。严比加指安思研计被来交达技天段光。全千设步影身据当条查需府有志。斗中维位转展新斯克何类及拉件科引解。主料内被生今法听或见京情准调就品。同六通目自观照干意音期根几形。",
  "csentence": "命己结最方心人车据称温增划眼难。",
  "range": [2, 3, 4, 5, 6, 7, 8, 9]
}

创建一个项目

现在我们要开始创建第一个项目了,准备好了吗?

第一步:点击蓝色按钮

不管你在哪个页面?这个蓝色按钮都会固定在那。

参数描述
归属如果你是创建团队项目,一定要记得选团队
项目基础 URL没有特殊要求,尽量简短表意。例:/nba
Swagger Docs API如果有,详见 Swagger 一节

第二步:点击进入刚刚创建的项目 第三步:点击创建接口

关于 em.demo.all ,详见 语法提示 一节。

在数据编辑器中,输入 em.demo.all 按下回车,神奇的事情发生了。已经基于 Mock.js 语法自动创建好了数据对象,点击创建完成最后一步吧!

最后一步:预览接口

每个接口旁边都会对应很多操作按钮。现在点击红框标注的 预览按钮,看看会发生什么事情吧!


5.相关Mock规范(Mockjs)

Mockjs文档:http://mockjs.com/examples.html#Number


6.EasyMock文档

Easy-Mock中文文档

7.常用mock类型

Restful的mock

如果后端提供 /restful/:id/list 这样或者这样 /restful/{id}/list 的接口地址。

可以这样配置mock:

配置:id或{id}这样格式的字段在url上,在mock数据时加上对应的参数获取方法,对该值进行获取并处理。若在mock数据中不对此参数处理,也不影响该接口正常mock数据输出。

Proxy代理

该方法是可以向 /proxy 传入的参数(query 和 body)都会被传递过去。 并且,如果你的代理接口地址为 http://example.com/api/user/:id,mock 接口地址为 /api/user/:id,那么这个 id 也会被正确的解析出来。

Tip:该mock方法超时时间为3s,这里建议在服务器中自己编写一个接口,避免请求超时,使用百度等其他网站亦可。

直接填写对应的地址,同时,该地址支持Restful格式,支持/api/user/:id格式的地址。

语法提示

现在数据编辑器支持 语法提示 了。如果你想获得关于 Mock.js 的语法提示,可以输入 em. 即可。 按照 Mock.js 的分类,分为:

  • em.base
  • em.date
  • em.image
  • em.color
  • em.text
  • em.name
  • em.web
  • em.address
  • em.helper
  • em.miscellaneous
  • em.demo.all

数据编辑器支持按下 shift + f 搜索

8.Easy-Mock在线平台(可提供测试)

http://172.81.246.73:7300/

留下评论

邮箱地址不会被公开。 必填项已用*标注