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…