You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.8 KiB
52 lines
1.8 KiB
import Mock from "mockjs"; |
|
import config from "@/request/config"; |
|
import * as login from "./modules/login"; |
|
import * as personal from "./modules/personal"; |
|
const { baseURL } = config; |
|
|
|
// 1. 开启/关闭所有模块拦截, 通过openMock开关设置. |
|
// 2. 开启/关闭单个模块拦截, 通过调用mock方法isOpen参数设置. |
|
// 3. 开启/关闭模块中某个请求拦截, 通过函数返回对象中的isOpen属性设置. |
|
const openMock = true; |
|
// 模拟所有模块 |
|
// mockAll([login], openMock); |
|
|
|
// function mockAll(modules, isOpen = true) { |
|
// for (const k in modules) { |
|
// mock(modules[k], isOpen); |
|
// } |
|
// } |
|
// 模拟单个模块 |
|
mock(login, openMock) |
|
mock(personal, openMock) |
|
/** |
|
* 创建mock模拟数据 |
|
* @param {*} mod 模块 |
|
* @param {*} isOpen 是否开启? |
|
*/ |
|
function mock(mod, isOpen = true) { |
|
if (isOpen) { |
|
for (var key in mod) { |
|
((res) => { |
|
if (res.isOpen !== false) { |
|
let url = baseURL; |
|
if (!url.endsWith("/")) { |
|
url = url + "/"; |
|
} |
|
url = url + res.url; |
|
Mock.mock(new RegExp(url), res.method, (opts) => { |
|
opts.data = opts.body ? JSON.parse(opts.body) : null; |
|
const resData = Mock.mock( |
|
typeof res.response === "function" |
|
? res.response(opts) |
|
: res.response |
|
); |
|
console.log("%cmock拦截, 请求: ", "color:blue", opts); |
|
console.log("%cmock拦截, 响应: ", "color:blue", resData); |
|
return resData; |
|
}); |
|
} |
|
})(mod[key]() || {}); |
|
} |
|
} |
|
}
|
|
|