import axios from 'axios' // MessageBox import { Message } from 'element-ui' import store from '@/store' import { getToken, removeToken } from '@/utils/auth' import router from '@/router' // create an axios instance const service = axios.create({ baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url withCredentials: false // send cookies when cross-domain requests // timeout: 10000 // request timeout }) // request interceptor service.interceptors.request.use( config => { // do something before request is sent if (store.state.token) { // let each request carry token --['X-Token'] as a custom key. // please modify it according to the actual situation. config.headers['X-Auth-Token'] = getToken() } return config }, error => { // do something with request error console.log(error) // for debug return Promise.reject(error) } ) // response interceptor service.interceptors.response.use( /** * If you want to get information such as headers or status * Please return response => response */ /** * Determine the request status by custom code * Here is just an example * You can also judge the status by HTTP Status Code. */ response => { const res = response.data if (res && res.code === 0) { return res } else if (res && res.code === -1) { // 2909 登录超时 // cookie失效 Message({ message: res.msg || 'error', type: 'error', duration: 5 * 1000 }) removeToken() router.push('/login') } else if (res && res.code) { Message({ message: res.msg || 'error', type: 'error', duration: 5 * 1000 }) } return res }, error => { Message({ message: '网络连接异常', type: 'error', duration: 5 * 1000 }) console.log('err' + error) // for debug return Promise.reject(error) } ) export default service