Closed jasminecjc closed 7 years ago
欢迎提问。我认真看了下你的描述,虽然还是有很多疑问,但是还是先回复一下你。 首先我在文中出于初期不是很了解情况的前提下,做了两种尝试。
第一种是在发请求的query.js里面做了兼容处理,即会根据config.js里面的rapFlag来判定是不是rap的mock请求。这一点你可以看query.js最后面几行可以看出。如果非要说这个方法比后面方法有优点,那么就是它可以在github Page上利用rap做一个demo出来。就像示例一样。
第二种是做proxy也就是代理。这种方法最大的优点就是无侵入。它不会干扰任何业务代码,只是在server层级做了代理。这点就像是charles的map remote功能一样(希望你用过或者有了解)。
这两种方法是互斥的,你不能搞混两种情况,还是希望你认真读一遍原文,这样你会有收获的。另外给出一下mock目录里面的代码你看看,希望有帮助(它是第二种方案下的mock和联调的处理)。
var co = require('co');
var fetch = require('node-fetch');
var safeeval = require('safe-eval');
var mockjs = require('mockjs');
// var rapProjectPath = '/mockjs/6'
// var Host = 'http://116.7.245.xxx:8345' //rap地址
var Host = 'http://192.168.100.xxx:8080' //后端所在地址 项目需要发布到/api路径下
function mockMapFun(req,res){
co(function *() {
var response = yield fetch(Host + rapProjectPath + req.url.replace('/api/','/'));
var mockTpl = yield response.text();
res.json( mockjs.mock(safeeval(mockTpl)) );
});
}
module.exports = {
'GET /api/(.*)':Host,
'POST /api/(.*)':Host
// 'GET /api/(.*)':mockMapFun,
// 'POST /api/(.*)':mockMapFun
};
这里的注释就是rap和实际联调的处理,你使用其中一个时候注释另外一个即可。
我按照你博客里写的步骤配置rap 1.配置config.js rapFlag设为true,rapHost配置为rap网站上的请求根路径,跟示例只有后面数字的不同 2.配置query.js 代码和你github仓库里的一样 3.运行
dva g model funnel
信息如下3.配置mock/funnel.js 代码同示例
4.配置model
这里获取到的data为undefined 查看发起的请求, 地址如下: http://localhost:8989/funnel/getMyFunnels?userId=111 返回码为200 没有返回结果,直接访问没有任何数据 访问 http://rap.taobao.org/mockjs/11182/funnel/getMyFunnels 是有数据的,想问我哪里的配置有问题么