第一步:创建uilt文件夹/axios.js (名字随你取)
import axios from 'axios'
import router from '@/router/index.js'
import {Loading, Message} from 'element-ui'
const service = axios.create({
baseURL: process.env.BASE_URL, // api的base_url
timeout: 8000 // 请求超时时间
});
service.interceptors.response.use(//利用axios拦截器实现拦截状态401代表重新登录
response => {
return response;
},
error => {
if (error.response) {
switch (error.response.status) {
case 401:
// 返回 401 清除token信息并跳转到登录页面
Message.error("您的账号已被异地登录,或者请求有误,请重新登录!");
router.replace({
path: 'login',
query: {redirect: router.currentRoute.fullPath}
})
break;
case 403:
Message.error("您的账号已被异地登录,或者请求有误,请重新登录!");
router.replace({
path: 'login',
query: {redirect: router.currentRoute.fullPath}
})
break;
}
}
return Promise.reject(error.response.data) // 返回接口返回的错误信息
});
export default service
第二步:main.js中引入
import Vue from 'vue'
import App from '@/App'
import router from '@/router/index.js'
import store from './store'
import service from './uilt/axios.js'//引入js文件
import ElementUI from 'element-ui'
import echarts from 'echarts' //引入echarts
import 'element-ui/lib/theme-chalk/index.css'
Vue.prototype.$echarts = echarts //引入组件
Vue.config.productionTip = false
Vue.prototype.$axios = service
Vue.use(ElementUI);
/* eslint-disable no-new */
new Vue({
el: '#app',
router,
store,
components: { App },
template: '<App/>'
})
因为我的需求只需要有限 所以并未封装完全欢迎各位大神指点指点