mock模拟数据

作者: Shiyouzhang | 来源:发表于2021-06-22 16:00 被阅读0次

    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]() || {})
        }
      }
    }
    

    相关文章

      网友评论

        本文标题:mock模拟数据

        本文链接:https://www.haomeiwen.com/subject/kembyltx.html