mock根据get请求参数返回

时间:2024-03-17 08:16:25

mock根据get请求参数返回

之所以看的远,是因为站在了巨人肩膀上
在此感谢dadiyang,欢迎大家去看看他的博客:Mockjs如何拦截带参数的GET请求



问题

使用mock确实解决了前后端开发分离的问题,但是如何根据特定的请求参数,返回指定的结果呢?
这样就引出两个问题

  1. 如何获取请求参数
  2. 获取到请求参数后如何根据请求参数返回指定数量的返回结果

解决方案

mock文档

  1. 参考自mock文档
    mock根据get请求参数返回

  2. 一开始我是用的是 URL字符串,然后带参数请求,各种拦截不到,当时为了省事,直接判断环境,如果是开发环境(dev),就去除所有请求参数,我承认这种方法超级low。后来整明白了,可以使用正则表达式匹配,但是要注意URL重复的情况。

  3. 请求URL: /back/test?limit=8,这里示例可以离别为为请求8条数据

  4. 正则表达式: RegExp(url.testUrl + '.*')

  5. options

    • 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问题