mock模拟数据
2021-06-22 本文已影响0人
Shiyouzhang
mock模拟数据
最近看了一个项目发现了里面mock用的非常不错,所以用此文章来记录一下
1、书写模拟数据
import Mock from 'mockjs'
// 登录
export function login () {
return {
// isOpen: false,
url: '/sys/login',
type: 'post',
data: {
'msg': 'success',
'code': 0,
'expire': Mock.Random.natural(60 * 60 * 100, 60 * 60 * 1200),
'token': Mock.Random.string('abcdefghijklmnopqrstuvwxyz0123456789', 32)
}
}
}
// 退出
export function logout () {
return {
// isOpen: false,
url: '/sys/logout',
type: 'post',
data: {
'msg': 'success',
'code': 0
}
}
}
2、引入模拟数据
import * as common from './modules/common'
3、使用模拟数据
// 1. 开启/关闭[业务模块]拦截, 通过调用fnCreate方法[isOpen参数]设置.
// 2. 开启/关闭[业务模块中某个请求]拦截, 通过函数返回对象中的[isOpen属性]设置.
fnCreate(common, false)
4、封装方法抽离接口和请求方式
/**
* 创建mock模拟数据
* @param {*} mod 模块
* @param {*} isOpen 是否开启?
*/
function fnCreate (mod, isOpen = true) {
if (isOpen) {
for (var key in mod) {
((res) => {
if (res.isOpen !== false) {
Mock.mock(new RegExp(res.url), res.type, (opts) => {
opts['data'] = opts.body ? JSON.parse(opts.body) : null
delete opts.body
console.log('\n')
console.log('%cmock拦截, 请求: ', 'color:blue', opts)
console.log('%cmock拦截, 响应: ', 'color:blue', res.data)
return res.data
})
}
})(mod[key]() || {})
}
}
}