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

2.特性
- 基于 Swagger 快速创建项目
- 支持显示接口入参与返回值
- 支持显示实体类
3.Easy-Mock安装
可以通过拉取该项目代码仓到本地运行
$ git clone https://github.com/easy-mock/easy-mock.git $ cd easy-mock && npm install $ npm run dev
其中,相关依赖软件必须安装 Node.js(v8.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/" } }
背景图配置:
登录页的背景图服务目前支持 Unsplash 与 Bing。
如果 unsplashClientId
配置留空,默认由 Bing 提供服务。
注意:
publicPath
默认是'/dist/'
。如有需要,可以将其替换成自己的 CDN;- 关于
fe
的配置,一旦发生改变应该重新执行 build 命令。
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文档
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 搜索