使用axios以及mock进行ajax请求数据模拟
对于axios和mock相关的接口这里就不做具体说明了,官网都有很详细的说明,这里是传送门https://www.kancloud.cn/yunye/axios/234845,https://github.com/nuysoft/Mock/wiki/Getting-Started
- 需要安装axios以及mock
npm install --save axios mockjs
在文件中引入axios以及mockjs
import Mock from 'mockjs' import axios from 'axios'
配置mock模拟假数据
Mock.mock('/a.php', { 'yewe|4': 'a.php ' }) Mock.mock('/user', { 'name|1-3': 'user' })
设置axios请求ajax
axios.get('/a.php') .then((res) => { console.log(res.data, 'success') }) .catch((err) => { console.log(err, 'error') })
设置拦截器
// 请求拦截器 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>