vue 使用 mock.js

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请求参数

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值