最近工做中遇到了排期比较紧张的项目,先后端分离并行开发成为必然选择。所谓先后端分离,即约定好一套接口标准,先后端各自独立开发,就不会被对方的技术难点给阻塞住,从而保证项目进度。这样的并行开发看似美好,实际使用起来也遇到了很多痛点:javascript
项目主要使用了组件库ant-design
.以及基于此的中台前端解决方案 ant-design-pro
. 该解决方案底层工具使用roadhog
,该工具除了包装webpack,webpack-dev-server 完成构建,和开发中的自动同步构建,还增长了代理转发的功能,经过代理请求就可以轻松处理数据模拟的功能。使得在项目中能够轻松集成模拟数据。css
固然只是使用模拟数据仍是不够的,使用roadhog-api-doc
自动生成文档工具,经过读取假数据配置文件,能够自动生成文档。恰当使用配置,指定ip,端口,还能够在文档上直接发起请求访问真实数据,本身写个循环脚本就能够批量测试接口啦。糟糕~ 是心动的感受。html
前戏这么久,终于进入正题了。下面进入使用攻略环节。前端
roadhog-api-doc
主要是靠读取 .roadhog.mock.js
文件生成文档。全部的mock数据都要写在这里。形式以下java
import { postRule } from './mock/rule'; import { format } from 'roadhog-api-doc'; const proxy = { 'GET /api/currentUser': { // 接口描述 $desc: "获取当前用户接口", // 接口参数 $params: { pageSize: { desc: '分页', exp: 2, }, }, // 接口返回 $body: { name: 'momo.zxy', avatar: imgMap.user, userid: '00000001', notifyCount: 12, }, }, 'POST /api/rule': { $params: { pageSize: { desc: '分页', exp: 2, }, }, $body: postRule, }, }; // format 函数用于保证本地的模拟正常,若是写了文档,这个函数转换是必要的 export default format(proxy);
生成结果以下webpack
文档中请求地址,参数,包罗万象。经过在mock接口中增长描述字段,就能够直接在文档中显示了。点击 send 按钮,及发送请求。弹框输出请求结果
使用 roadhog-api-doc start [port]
即启动服务,指定端口,至关于开发环境,自动监控文件变化刷新页面
使用 roadhog-api-doc build [port]
构建文档,输出到dist目录,生成 api.html, api.js, api.css 三个文件web
输出了api文档,可是还想要请求真实环境地址,集中测试接口怎么办?
看了源码后发现,请求地址的ip部分写死了 localhost
,只有端口可变。在lib/
目录下,源码以下json
const configContent = ` export default { port: "${projectServerPort}", docPort: "${port}", isStatic: ${isStatic}, } `; fs.writeFileSync(path.join(tempDir, './src/config.js'), configContent, 'utf-8'); if (projectServerPort) { const mockjsContent = ` export default { 'GET /api/*': 'http://localhost:${projectServerPort}/', 'POST /api/*': 'http://localhost:${projectServerPort}/' }; `; fs.writeFileSync(path.join(tempDir, './.roadhogrc.mock.js'), mockjsContent, 'utf-8'); }
projectServerPort
是命令行输入的端口号,咱们想要修改ip,须要修改一下源码。将localhost 改成参数,在命令行中输入,指定IP和端口号,就能够自由发起请求了。
修改代码后端
const mockjsContent = ` export default { 'GET /api/*': '${projectIP}:${projectServerPort}/', 'POST /api/*': '${projectIP}:${projectServerPort}/' };
启动命令改成roadhog-api-doc start [port] [ip]
roadhog-api-doc build [port] [ip]
api
须要注意的是,start命令和build命令分别对应两个执行文件 start.js build.js 两个文件都要修改。
roadhog-api-doc
的实现原理很简单,就是靠读取配置文件实现一个简单的页面。在ant-design-pro
中,配合roadhog
一块儿使用,可使用一套mock数据,既可用于前端开发,又可生成接口文档。一次修改,两边同步,很是便捷。不用特别维护接口文档,为开发省了很多力气,也避免了接口文档由于年久失修而被丢弃的命运。