一、前言
本文基于开源项目:
我们在进行新项目开发、或者项目迭代开发,有些时候我们前端先一步开发完页面,就需要等待后端伙伴开发完成才可以联调。如果有个Mock服务我们就可以先一步验证我们页面的功能,提早发现并完成调整优化。
使用Mock的好处有很多,这里就不啰嗦了。
新项目一般我们直接调用Mock的api url即可,对于一些迭代开发的项目,我们既可以调用之前联调好的自己服务api,同时也可以调用我们的Mock,两者同时访问并不冲突的。有很多种处理方式,例如我们通过url上进行一些特定的处理即可。
广东靓仔在18年的时候分享过这方面的内容,这里给小伙伴们重温下。
业界有不少关于MOCK这方面的应用,列举几个:
- Mock
- RAP
- NEI
- EASY MOCK
- api blueprint
严谨的技术团队一般会选择本地部署自己的Mock服务
这里广东靓仔主要讲EASY MOCK本地部署、以及它的语法
二、easy-mock拥有的特性
- 支持API代理
- 便捷的快捷方式
- 支持协同编辑
- 支持团队项目
- 支持RESTful
- 支持Swagger | OpenAPI规范(1.2&2.0&3.0)
- 基于Swagger快速创建项目
- 支持显示参数和返回值
- 支持显示类模型
- 响应数据更加灵活和可扩展
- 支持自定义响应配置(例如:状态/标题/ cookie)
- 使用Mock.js模式
- 支持restc预览API
这些特性都是官方列举出来的,大家有兴趣可以去看官方文档。
三、easy-mock本地部署
要私有部署easy-mock,我们需要安装Node.js ( v8.x,不支持v10.x)和 MongoDB(> = v3.4)以及 REdis(> = v4.0)。
具体安装方式大家可以网上找对应的版本进行安装,这里就不展开了。安装完以上三个东东,我们安装最主要的easy-mock,操作如下:
$ git clone https://github.com/easy-mock/easy-mock.git $ cd easy-mock && npm install
接着我们配置一下,查找config / default.json或创建config / local.json覆盖某些配置。配置有很多,有兴趣可以自行查看,这里简单的配置参考如下:
{ "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, e.g."5a4495e16ef711102113e500" "ips": [] // ip, e.g. "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": "", // Set server to enable LDAP login. e.g. "ldap://localhost:389" or "ldaps://localhost:389"(use SSL) "bindDN": "", // Username,e.g. "cn=admin,dc=example,dc=com" "password": "", "filter": { "base": "", // Base where we can search for users,e.g. "dc=example,dc=com" "attributeName": "" // e.g. "mail" or "email" etc. } }, "fe": { "copyright": "", "storageNamespace": "easy-mock_", "timeout": 25000, "publicPath": "/dist/" } }
部署,官方建议使用PM2,操作如下
全局安装PM2
$ [sudo] npm install pm2 -g
通过PM2启动
应该在此步骤之前运行build
$ NODE_ENV=production pm2 start app.js
当我们完成以上操作后,启动服务,在页面访问,会看到以下页面:
当然,我们得做点什么,让页面看起来高大上一点。我们可以对这个页面的改造,比如我们把logo换成我们自己团队的,把里面的一些不经常用的入口屏蔽了。在里面增加一些其他操作都是可以的,别把应用搞崩即可。 我们改造完成之后,重新打包,更新服务就可以看到效果了。