main.js
import axios from "./http.js";
http.js
import Vue from 'vue'
import axios from 'axios' //引入axios
import VueAxios from 'vue-axios'
Vue.use(VueAxios, axios)
axios.defaults.baseURL='xxxxx';
//下面这两个不一定需要引入,看你项目需要拦截的时候做什么操作,但是一般都需要引入store
import store from './store.js' //引入store
import {router} from './router.js' //引入router
let instance = axios.create({
headers: {
'content-type': 'application/x-www-form-urlencoded'
}
})
// 添加请求拦截器
instance.interceptors.request.use(
config => {
let token=localStorage.getItem('token')
if (token) {
// 判断是否存在token,如果存在的话,则每个http header都加上token
config.headers.token = token //请求头加上token
}
return config
},
err => {
return Promise.reject(err)
}
)
//添加响应拦截器
instance.interceptors.response.use(
response => {
//拦截响应,做统一处理
// if (response.data.code) {
// switch (response.data.code) {
// case 126056:
// store.state.login = false
// router.replace({
// path: 'login',
// query: {
// redirect: router.currentRoute.fullPath
// }
// })
// }
// }
if (response.data.code === 126056||response.data.code === 126071||response.data.code === 126047||response.data.code === 126026) {
router.push('/login');
localStorage.setItem('token','')
store.dispatch('LoginOut');
store.commit('del_token');
}
return response
},
//接口错误状态处理,也就是说无响应时的处理
error => {
return Promise.reject(error.response.status) // 返回接口返回的错误信息
}
)
export default instance