Mock.js生产使用

在项目中用了把mock.js,第一次用造数据花了不少时间,不过整体来说还是挺好用的。

let users = ['anzhihe1', 'anzhihe2', 'atom', 'Messi', 'C.Ronaldo']
Mock.mock({
  data: {
    list: Random.pick(users, 1, 4), //从users中随机选取1-4个元素组成新的数组list
  }
})

Random.extend({
  newUsers: users,
  // 自定义占位符名字为newUserArr
  newUserArr: function (date) {
    return this.pick(this.newUsers, 1, 4).join(',');
  }
})

const list = Mock.mock({
  'list|20': [{
    'id|+1': 0,
    'groupName': '@Groups',
    'groupID': '@integer(50,100)',
    'resourceName': '@string',
    'lbName': '@string',
    'domain': '@domain',
    'treePath': '@string',
    'cloudVendors|1': ['aws', 'aliyun', 'azure', 'ks'],
    'region': '@region',
    'account': '@word',
    'targetHostNumber|0-100': 0,
    'maintainer': '@newUserArr',
    'remark': '@word(20)',
    'createdTime': '@DATETIME',
    'updateTime': '@DATETIME',
    "special": null, //特殊字段
  }]
})

// Mock.mock(RegExp(`${process.env.VUE_APP_API_BASE_URL}/elasticGroups` + '.*'),'get', ({url}) => {
// Mock.mock(RegExp('.*'),'get', ({url}) => {
Mock.mock(RegExp('/list'), 'get', ({ url }) => {
  const params = parseUrlParams(decodeURI(url))
  let { page, pageSize } = params
  page = eval(page) - 1 || 0
  pageSize = eval(pageSize) || 10
  delete params.page
  delete params.pageSize
  let result = list.list.filter(item => {
    for (let [key, value] of Object.entries(params)) {
      if (item[key] != value) {
        return false
      }
    }
    return true
  })
  const total = result.length
  if ((page) * pageSize > total) {
    result = []
  } else {
    result = result.slice(page * pageSize, (page + 1) * pageSize)
  }

  return {
    code: 200,
    message: 'success',
    // data: {
    //   page: page + 1,
    //   pageSize,
    //   total,
    //   list: result
    // },
    data: result,
    total: total,
    page: page + 1,
    pageSize: pageSize
  }
})

// 新建弹性组
Mock.mock(RegExp('/add'), 'post', (parameter) => {
  let params = JSON.parse(parameter.body);
  params['id'] = parseInt(Math.random()*(100 - 21) + 21)
  list.list.unshift(params)
  let result = params

  return {
    code: 200,
    message: '添加成功',
    data: result
  }
})

// 更新弹性组
Mock.mock(RegExp('/update'), 'put', (parameter) => {
  const params = JSON.parse(parameter.body);
  let result = params

  list.list = list.list.map(item => {
    return item.id === params.id ? params : item
  })

  return {
    code: 200,
    message: '更新成功',
    data: result
  }
})

// 删除弹性组
Mock.mock(RegExp('/delete'), 'delete', (parameter) => {
  const params = JSON.parse(parameter.body);
  const index = list.list.findIndex(item => item.id === params.id)
  list.list.splice(index, 1)

  return {
    code: 200,
    message: '删除成功',
    data: list.list
  }
})

// 弹性组快速扩缩容
Mock.mock(RegExp('/scale'), 'post', (parameter) => {
  const params = JSON.parse(parameter.body);
  console.log(params.id);
  console.log(params);
  let result = list.list.map(item => {
    // let tmp = Object.assign({}, item)
    return item.id === params.id ? item.targetHostNumber = params.targetHostNumber : item
  })

  return {
    code: 200,
    message: '弹性组快速扩缩容成功',
    data: result
  }
})

const hosts = [
  {
    "instanceId": "i-0fcd93b7dc18", //InstanceID
    "instanceType": "m5.large", //实例规格
    "launchTime": "2022-12-02T07:17:22Z", //上线时间
    "privateIpAddress": "10.15.36.18", //私有IP
    "state": "running" //运行状态
  },
  {
    "instanceId": "i-0fcdK8627dc19", //InstanceID
    "instanceType": "m5.large", //实例规格
    "launchTime": "2022-12-02T07:17:22Z", //上线时间
    "privateIpAddress": "10.15.36.89", //私有IP
    "state": "running" //运行状态
  },
  {
    "instanceId": "i-0fcd93K7dc90", //InstanceID
    "instanceType": "m5.large", //实例规格
    "launchTime": "2022-12-02T07:17:22Z", //上线时间
    "privateIpAddress": "10.15.36.90", //私有IP
    "state": "shutdown" //运行状态
  }
]

// 获取弹性组主机列表
Mock.mock(RegExp('/describe'), 'get', (parameter) => {
  const params = JSON.parse(parameter.body);
  // console.log(params.id);
  console.log(params);

  return {
    code: 0,
    message: 'success',
    requestId: "5a38c305-f13d-44b7-af48-9de7396213434a", //请求ID
    data: hosts
  }
})

// 剔除云主机
Mock.mock(RegExp('/terminate'), 'delete', (parameter) => {
  const params = JSON.parse(parameter.body);
  console.log('params', params);
  let instanceId = params.instanceId
  for (let id of instanceId) {
    let index = hosts.findIndex(item => item.instanceId === id)
    if (index != -1) hosts.splice(index, 1)
  }

  return {
    code: 200,
    message: '删除实例成功',
    data: hosts
  }
})


anzhihe 安志合个人博客,版权所有 丨 如未注明,均为原创 丨 转载请注明转自:https://chegva.com/5600.html | ☆★★每天进步一点点,加油!★★☆ | 

您可能还感兴趣的文章!

发表评论

电子邮件地址不会被公开。 必填项已用*标注