vue中使用axios以及mock进行ajax请求数据模拟

本文介绍如何在Vue项目中结合axios和Mock.js进行ajax请求数据的模拟。通过安装axios和Mock.js,配置模拟数据,设置axios请求及拦截器,提供了一个基于vue-cli的实例代码,替换App.vue内容后运行可以看到模拟请求的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用axios以及mock进行ajax请求数据模拟

对于axios和mock相关的接口这里就不做具体说明了,官网都有很详细的说明,这里是传送门https://www.kancloud.cn/yunye/axios/234845https://github.com/nuysoft/Mock/wiki/Getting-Started

  1. 需要安装axios以及mock
    npm install --save axios mockjs
  2. 在文件中引入axios以及mockjs

    import Mock from 'mockjs'
    
    import axios from 'axios'
  3. 配置mock模拟假数据

    Mock.mock('/a.php', {
    'yewe|4': 'a.php '
    })
    
    Mock.mock('/user', {
    'name|1-3': 'user'
    })
  4. 设置axios请求ajax

    axios.get('/a.php')
    .then((res) => {
      console.log(res.data, 'success')
    })
    .catch((err) => {
      console.log(err, 'error')
    })
  5. 设置拦截器

    // 请求拦截器
    axios.interceptors.request.use((req) => {
      if (req.url === '/a.php') {
        console.log('yes')
        req.url = '/user'
      }
      console.log(req, '--req')
      return req
    }, (err) => {
      return Promise.reject(err)
    })
    
    // 响应拦截器
    axios.interceptors.response.use((res) => {
      if (res.data && res.data.name) {
        res.data.name = 'xxyy'
      }
      return res
    }, (err) => {
      return Promise.reject(err)
    })
    

    最后给出完整的实例代码,demo是依据vue-cli脚手架搭建的,只需要将App.vue文件的内容替换,npm run dev之后就可以看到该实例的效果

    <template>
      <div id="app">
        <button  @click="fetchData">ajax</button>
      </div>
    </template>
    
    <script>
    import Mock from 'mockjs'
    import axios from 'axios'
    
    // 请求拦截器
    axios.interceptors.request.use((req) => {
      if (req.url === '/a.php') {
        console.log('yes')
        req.url = '/user'
      }
      console.log(req, '--req')
      return req
    }, (err) => {
      return Promise.reject(err)
    })
    
    // 响应拦截器
    axios.interceptors.response.use((res) => {
      if (res.data && res.data.name) {
        res.data.name = 'xxyy'
      }
      return res
    }, (err) => {
      return Promise.reject(err)
    })
    
    Mock.mock('/a.php', {
      'yewe|4': 'a.php '
    })
    
    Mock.mock('/user', {
      'name|1-3': 'user'
    })
    
    export default {
      name: 'App',
      methods: {
        fetchData () {
          axios.get('/a.php')
            .then((res) => {
              console.log(res.data, 'success')
            })
            .catch((err) => {
              console.log(err, 'error')
            })
        }
      }
    }
    </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值