配置axios的文件源码 (简单配置)
import axios from 'axios'
import { Toast } from 'vant'
import store from '@/store'
import router from '@/router'
const request = axios.create({
timeout: 10000,
headers: {
'X-Requested-With': 'XMLHttpRequest',
'X-Version': '1.0'
}
});
request.interceptors.request.use((config) => {
if (localStorage.getItem('Authorization')) {
config.headers.Authorization = localStorage.getItem('Authorization')
}
return config;
}, err => Promise.reject(err));
request.interceptors.response.use(
res => {
store.commit('SET_LOADING_STATUS', false)
if (res.data.code === 401) {
Toast('登录超时,请重新登录')
store.commit('SET_LOGINOUT')
router.replace('/login').then(() => {
location.reload()
}).catch(err => console.log(err))
}
res.data.code != 200 && Toast(res.data.message)
return res.data
},
error => {
store.commit('SET_LOADING_STATUS', false)
if (typeof error.response === 'undefined') {
Toast('服务器开小差了...')
}
console.log(error)
error.response.status === 500 && Toast('服务器开小差了,请稍等...')
return Promise.reject(error)
})
const postForm = (url, data = {}) => {
return request.post(url, data, {
headers: {
'Content-Type': 'application/json',
},
});
};
const fetch = (url, params = {}) => {
return request.get(url, { params })
}
export default {
install(Vue) {
Vue.http = { postForm, fetch};
Vue.prototype.$http = Vue.http;
},
};
export {
postForm,
fetch
}