mock根据get请求参数返回
之所以看的远,是因为站在了巨人肩膀上
在此感谢dadiyang,欢迎大家去看看他的博客:Mockjs如何拦截带参数的GET请求
文章目录
问题
使用mock确实解决了前后端开发分离的问题,但是如何根据特定的请求参数,返回指定的结果呢?
这样就引出两个问题
- 如何获取请求参数
- 获取到请求参数后如何根据请求参数返回指定数量的返回结果
解决方案
mock文档
-
参考自mock文档
-
一开始我是用的是 URL字符串,然后带参数请求,各种拦截不到,当时为了省事,直接判断环境,如果是开发环境(dev),就去除所有请求参数,我承认这种方法超级low。后来整明白了,可以使用正则表达式匹配,但是要注意URL重复的情况。
-
请求URL:
/back/test?limit=8
,这里示例可以离别为为请求8条数据 -
正则表达式:
RegExp(url.testUrl + '.*')
-
- url 请求的url,可以提取参数
- type 请求的类型:get/post
- body 请求体,适用于post请求
关键点就在 url 上,可以从
options.url
提取参数
DEMO
/* 列表 */
const bank = Mock.mock(RegExp(url.testUrl + '.*'), 'get', options => {
let limit = parseInt(getParameter(options.url, 'limit'));
let mockMsg = {
result: {
rows: []
}
};
// 根据请求参数传入指定数量的数据
for (let i = 0; i < limit; i++) {
mockMsg.result.rows.push({
id: '@increment(1)'
});
}
let result = Mock.mock(mockMsg);
console.log('Mock结果:', result);
return result;
});
-
目前仍然存在问题是,我的这种根据参数控制数组长度的方法太蠢笨了,不知道有没有其他方法?
参见github问题