前端使用mock,模拟后端接口

常我们在做项目时会遇到后端接口还没有完成的情况,这个时候我们可以使用mock 实现本地模拟后端接口来测试前端代码效果

1、安装mock

npm install mockjs

2、 创建一个mock.js文件
在这里插入图片描述
下面编写两个接口,一个是get请求,一个是post请求带分页

// 引入mockjs
const Mock = require('mockjs')
// 获取 mock.Random 对象
const Random = Mock.Random
// mock一组数据

// const produceNewsData = function () {
  let articles = []
  for (let i = 0; i < 100; i++) {
    let newArticleObject = {
      title: Random.csentence(5, 30), //  Random.csentence( min, max )
      author_name: Random.cname(), // Random.cname() 随机生成一个常见的中文姓名
      date: Random.date() + ' ' + Random.time() // Random.date()指示生成的日期字符串的格式,默认为yyyy-MM-dd;Random.time() 返回一个随机的时间字符串
    }
    articles.push(newArticleObject)
  }
// }
console.log(articles,'articles')
// 拦截ajax请求,配置mock的数据
Mock.mock('/api/articles', 'get', articles)
Mock.mock('/api/articles', 'post', (params)=>{
  console.log(params)
  const [index,size,total] = [JSON.parse(params.body).pageIndex,JSON.parse(params.body).pageSize,articles.length]
  let len = total/size;
  console.log(index,size,total)
  const totalPages = len - parseInt(len) >0 ? parseInt(len)+1 : len
  const newProduceNewsData = articles.slice(index * size, (index+1)*size)
  return {
    code: '0',
    message: 'success',
    data:{
      pageIndex: index,
      pageSize: size,
      list: newProduceNewsData,
      total: total,
      totalPages: totalPages
    }
  }
})


3、 引用mock,在dev.env.js中设置为true
在这里插入图片描述

'use strict'
const merge = require('webpack-merge')
const prodEnv = require('./prod.env')

module.exports = merge(prodEnv, {
  NODE_ENV: '"development"',
  Mock: true
})

在prod.env.js生产环境中设置为false

'use strict'
module.exports = {
  NODE_ENV: '"production"',
  Mock: false
}

在main.js中引入
在这里插入图片描述

process.env.Mock && require('./mock.js')

4、去相应的界面使用

import axios from 'axios'
 mounted(){
      axios.get('/api/articles')
        .then(e => {
          console.log(e)
        })
        .catch(err => {
          console.log(err)
        })
      axios.post('/api/articles',{pageIndex:2,pageSize:20})
        .then(e => {
          console.log(e)
        })
        .catch(err => {
          console.log(err)
        })
    },

效果如图所示
在这里插入图片描述

  • 14
    点赞
  • 85
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值