mockjs官方文档
https://github.com/nuysoft/Mock/wiki
1. 安装
npm install --save mockjs
2.封装mock使用
在 src下面创建一个mock目录,创建一个index.js文件,其它模拟的数据都放在和index.js文件同级,遍历所有mock下面的文件然后注册mock服务
import Mock from 'mockjs'
// 设置响应延时
Mock.setup({
// 可以是整数,也可以是‘-’字符串
timeout: '200-600'
})
const evnConfig = window.EVN_CONFIG
let configArray = []
if (evnConfig.mock) {
// 使用webpack的require.context()遍历所有的mock文件
const files = require.context('.', true, /\.js$/)
files.keys().forEach((key) => {
if (key === './index.js') return
configArray = configArray.concat(files(key).default)
})
// 注册所有的mock服务
configArray.forEach((item) => {
let url = evnConfig.baseApiUrl
url += item.url
/**
* RegExp(url + '.*') 使用正则匹配URL
* item.method 请求的方法 POST/GET/PUT/DELETE
* (options) => {} 返回的函数
* options 可以获取到 body, type, url
*/
Mock.mock(RegExp(url + '.*'), item.method, (options) => {
console.debug(url, options)
return Mock.mock(item.response)
})
})
}
例如 sso.js文件里面的请求
export default [
{
url: '/auth/v1/loginUser/search',
method: 'post',
timeout: 100,
statusCode: 200,
response: ({ query }) => {
return {
code: 200,
msg: '成功',
data: {
userId: 1,
userName: 'zhangsan',
roleId: 2,
roleName: '2',
unitId: 3,
unitName: '3'
}
}
}
},
{
url: '/system/app/config/v1/info',
method: 'get',
timeout: 100,
statusCode: 200,
response: ({ query }) => {
return {
code: 200,
msg: '成功',
data: {
id: 34,
appId: '统一网关',
appIp: '127.0.0.1',
appPort: 9001,
delFlag: '0',
searchValue: '',
createBy: 'admin',
createTime: '2022-10-10 14:43:27',
updateBy: 'admin',
updateTime: '2022-10-10 14:44:57',
remark: '备注',
params: {}
}
}
}
},
{
url: '/api/analysis-forecast-atk/page',
method: 'get',
timeout: 100,
statusCode: 200,
response: ({ query }) => {
return {
code: 0,
msg: '成功',
data: {
total: 14,
list: [
{
id: 1,
srcIp: '10.10.10.127',
dstIp: '5',
atkType: '蠕虫病毒攻击',
atkStartTime: '2022-09-28 16:44:12',
atkCnt: 10,
createTime: '2022-09-28 16:44:19',
accountId: 5,
dn: null
},
{
id: 1,
srcIp: '10.10.10.127',
dstIp: '5',
atkType: '蠕虫病毒攻击',
atkStartTime: '2022-09-28 16:44:12',
atkCnt: 10,
createTime: '2022-09-28 16:44:19',
accountId: 5,
dn: null
},
{
id: 1,
srcIp: '10.10.10.127',
dstIp: '5',
atkType: '蠕虫病毒攻击',
atkStartTime: '2022-09-28 16:44:12',
atkCnt: 10,
createTime: '2022-09-28 16:44:19',
accountId: 5,
dn: null
},
{
id: 1,
srcIp: '10.10.10.127',
dstIp: '5',
atkType: '蠕虫病毒攻击',
atkStartTime: '2022-09-28 16:44:12',
atkCnt: 10,
createTime: '2022-09-28 16:44:19',
accountId: 5,
dn: null
},
{
id: 1,
srcIp: '10.10.10.127',
dstIp: '5',
atkType: '蠕虫病毒攻击',
atkStartTime: '2022-09-28 16:44:12',
atkCnt: 10,
createTime: '2022-09-28 16:44:19',
accountId: 5,
dn: null
},
{
id: 1,
srcIp: '10.10.10.127',
dstIp: '5',
atkType: '蠕虫病毒攻击',
atkStartTime: '2022-09-28 16:44:12',
atkCnt: 10,
createTime: '2022-09-28 16:44:19',
accountId: 5,
dn: null
},
{
id: 1,
srcIp: '10.10.10.127',
dstIp: '5',
atkType: '蠕虫病毒攻击',
atkStartTime: '2022-09-28 16:44:12',
atkCnt: 10,
createTime: '2022-09-28 16:44:19',
accountId: 5,
dn: null
},
{
id: 1,
srcIp: '10.10.10.127',
dstIp: '5',
atkType: '蠕虫病毒攻击',
atkStartTime: '2022-09-28 16:44:12',
atkCnt: 10,
createTime: '2022-09-28 16:44:19',
accountId: 5,
dn: null
},
{
id: 1,
srcIp: '10.10.10.127',
dstIp: '5',
atkType: '蠕虫病毒攻击',
atkStartTime: '2022-09-28 16:44:12',
atkCnt: 10,
createTime: '2022-09-28 16:44:19',
accountId: 5,
dn: null
},
{
id: 1,
srcIp: '10.10.10.127',
dstIp: '5',
atkType: '蠕虫病毒攻击',
atkStartTime: '2022-09-28 16:44:12',
atkCnt: 10,
createTime: '2022-09-28 16:44:19',
accountId: 5,
dn: null
},
{
id: 1,
srcIp: '10.10.10.127',
dstIp: '5',
atkType: '蠕虫病毒攻击',
atkStartTime: '2022-09-28 16:44:12',
atkCnt: 10,
createTime: '2022-09-28 16:44:19',
accountId: 5,
dn: null
},
{
id: 1,
srcIp: '10.10.10.127',
dstIp: '5',
atkType: '蠕虫病毒攻击',
atkStartTime: '2022-09-28 16:44:12',
atkCnt: 10,
createTime: '2022-09-28 16:44:19',
accountId: 5,
dn: null
},
{
id: 1,
srcIp: '10.10.10.127',
dstIp: '5',
atkType: '蠕虫病毒攻击',
atkStartTime: '2022-09-28 16:44:12',
atkCnt: 10,
createTime: '2022-09-28 16:44:19',
accountId: 5,
dn: null
},
{
id: 1,
srcIp: '10.10.10.127',
dstIp: '5',
atkType: '蠕虫病毒攻击',
atkStartTime: '2022-09-28 16:44:12',
atkCnt: 10,
createTime: '2022-09-28 16:44:19',
accountId: 5,
dn: null
}
],
pageNum: 1,
pageSize: 20,
size: 1,
startRow: 1,
endRow: 1,
pages: 1,
prePage: 0,
nextPage: 0,
isFirstPage: true,
isLastPage: true,
hasPreviousPage: false,
hasNextPage: false,
navigatePages: 8,
navigatepageNums: [1],
navigateFirstPage: 1,
navigateLastPage: 1
}
}
}
},
{
url: '/api/sys-config/project-info',
method: 'get',
timeout: 100,
statusCode: 200,
response: ({ query }) => {
return {
code: 0,
msg: '成功',
data: {
copyright: 'Copyright © 2022 格尔安全 版权所有',
version: '2.0.2207.08',
project_name: '格尔安全 ',
product_name: '网络综合管理软件111',
product_alias: '安全管理'
}
}
}
},
{
url: '/api/common/list-dicts',
method: 'get',
timeout: 100,
statusCode: 200,
response: ({ query }) => {
return {
code: 0,
msg: '成功',
data: {
deviceType: [
{
name: '边界防护设备',
value: 1001
},
{
name: '数据交换安全网关',
value: 1002
},
{
name: '安全监测系统',
value: 1003
},
{
name: '安全通信服务平台',
value: 1004
},
{
name: '安全保密套件',
value: 1005
},
{
name: '数据处理平台',
value: 1006
},
{
name: 'AQBM资源服务平台',
value: 1007
},
{
name: '内容安全告警',
value: 8
},
{
name: '其他',
value: 1099
}
],
severity: [
{
name: '高',
value: 'high'
},
{
name: '中',
value: 'middle'
},
{
name: '低',
value: 'low'
},
{
name: '普通',
value: 'info'
}
],
apiLogType: [
{
name: '性能接收数据接口',
value: 1
},
{
name: '安全事件接收接口',
value: 2
},
{
name: '日志信息接收接口',
value: 3
},
{
name: '分析结果接口',
value: 4
},
{
name: '介入认证接收接口',
value: 5
},
{
name: '安全事件查询接口',
value: 11
},
{
name: '日志信息查询接口',
value: 12
},
{
name: '性能事件查询接口',
value: 13
},
{
name: '策略下发接口',
value: 21
},
{
name: '策略下发查询接口',
value: 21
},
{
name: '用户登陆',
value: 101
},
{
name: '用户注销',
value: 102
},
{
name: '其他',
value: 999
}
],
eventAnalysisType: [
{
name: '加固策略建议',
value: '01'
},
{
name: '已知攻击告警信息',
value: '02'
},
{
name: '未知攻击预警信息',
value: '03'
},
{
name: '朔源报告(或告警事件)',
value: '04'
},
{
name: '其他',
value: '99'
}
],
eventType: [
{
name: '攻击告警',
value: 1
},
{
name: '包过滤告警',
value: 2
},
{
name: 'NAT告警',
value: 3
},
{
name: '端口映射告警',
value: 4
},
{
name: '代理转换告警',
value: 5
},
{
name: 'URL过滤告警',
value: 6
},
{
name: '邮件过滤告警',
value: 7
},
{
name: '内容安全告警',
value: 8
},
{
name: '行为告警',
value: 9
},
{
name: '病毒告警',
value: 10
},
{
name: '文件过滤告警',
value: 11
},
{
name: '入侵防御告警',
value: 12
},
{
name: '其他',
value: 99
}
],
authAccountStatus: [
{
name: '停用',
value: 0
},
{
name: '启用',
value: 1
},
{
name: '注销',
value: 2
}
],
authType: [
{
name: '认证',
value: 1
},
{
name: '注销',
value: 2
}
],
synType: [
{
name: 'Telnet',
value: 'Telnet'
},
{
name: 'SSH',
value: 'SSH'
}
]
}
}
}
}
]
3. main.js 注册
import './mock/index'
4.我本地的请求配置
//开启mock
window.EVN_CONFIG.baseApiUrl = "http://127.0.0.1:8080"
window.EVN_CONFIG.ssoApiUrl = "http://127.0.0.1:8080"
window.EVN_CONFIG.baseApiRoot = "/api"
window.EVN_CONFIG.mock = true
5.参考链接
Mock.mock的使用及参数详解
Mockjs如何拦截带参数的GET请求
mock.js使用 mock获取get、post请求参数