rap2做为一款阿里妈妈开源的http接口管理工具,被你们普遍使用。诚然,这款工具确实存在一些bug,可是在市面上主流的开源http接口管理工具当中,不失为一款优秀的工具。它的许多特性,包括团队管理、接口仓库、插件、mock数据、postman导出等,可使咱们很方便的管理接口文档以及有效地提升先后端协做的效率。html
在上图中,左边是你所属仓库的全部修改历史。让背锅有迹可循。右边则分别列出的是你拥有的仓库和加入的仓库。在这里你能够经过点击蓝字跳转到相应的仓库、模块、接口。前端
这里主要是一些外部接口。经过这些接口能够导出接口文档数据以及用于前端mock数据。关于mock方法,稍后会在使用场景中介绍。vue
经过这个页面,咱们能够看到整个系统的使用概览。ios
在进入一个仓库以后,咱们会看到以下界面:git
{
"name": "秀兰",
"age": 12,
"city": "深圳",
"province": "广东",
"avatar": "http://dummyimage.com/200x100/4A7BF7&text=Hello123123",
"intro": "我是一个来自深圳的朋友"
}
复制代码
看到这里好像大功告成了。这东西这么简单还要你来告诉我? too simple,sometimes naive. 若是仅仅止步于此,rap2只是实现了接口管理的工做,对于先后端协做的效率提高并无到最大化。对于前端开发者而言,他们仍是须要手动构造假数据。这样既繁琐、易出错以及数据覆盖范围窄。所以rap2结合了mockjs,提供了mock数据的功能。只要在参数上设置好生成规则和初始值,即可以生成大量的符合规则的随机数据。前端开发者只须要将整个仓库对应的mockjs插件导出,而后引用到本身的项目当中,就能够完彻底全地摆脱后端人员愉快地开发了。具体使用场景将会在下节中给出,在本节当中,将会初步演示mock效果。github
mock模板语法:github.com/nuysoft/Moc…vue-cli
mockjs官网模板示例:mockjs.com/examples.ht…npm
在这里例举三个场景,分别对应后端、前端与测试人员。json
对于后端开发来讲,主要负责模块的划分以及接口文档的编写。至于仓库管理以及mock模板规则,具体由谁负责可能须要先后端协商。axios
如今经过一个demo来演示前端如何结合rap2快速实现mock数据的功能。
rap2-vue-demo
npm intsall axios --save
npm intsall mockjs --save
复制代码
// src/mock/index.js
const Mock = require('mockjs');
require('./mock-template');
window.Mock = Mock;
(function(RAP, Mock) {
for (let repositoryId in RAP.interfaces) {
for (let itf of RAP.interfaces[repositoryId]) {
Mock.mock(itf.url, itf.method.toLowerCase(), settings => {
console.log(`Mock ${itf.method} ${itf.url} =>`, itf.response);
return Mock.mock(itf.response);
});
}
}
})(window.RAP, window.Mock);
复制代码
// src/mock/mock-template.js
(function() {
let repositoryId = 42;
let interfaces = [{...}] // 省略
let RAP = window.RAP || {
protocol: 'http',
host: 'rapapi.tool.wezhuiyi.com',
interfaces: {}
};
RAP.interfaces[repositoryId] = interfaces;
window.RAP = RAP;
})();
复制代码
原理其实就是将rap2仓库当中对应的mock模板导出,而后将它做为参数赋值给Mock对象,来完成Mock对象的构造。在这个demo当中是简单粗暴地将mock模板代码复制到src/mock/mock-template.js当中。我的认为最好的作法应该是远程引入rap2插件的js,这样接口若是有变更的话,前端无需任何改动。
import Mock from './mock';
import axios from 'axios';
Vue.config.productionTip = false;
Vue.prototype.$http = axios;
...
复制代码
mounted() {
this.$http.get("/api/v1/students").then(res => {
console.log(res.data);
this.student = res.data;
});
},
复制代码
对于测试人员来讲,使用rap2能够经过“导出Postman Collection”功能,将仓库的全部接口一键导入至postman。而后基于此快速构建接口层面的自动化测试。具体实践方法能够参考这篇文章:juejin.im/post/5c763a…