import { MessageBox, Message } from 'element-ui' import store from '@/store' import { getToken } from '@/utils/auth' import { showFullScreenLoading, tryHideFullScreenLoading } from './loading' // create an axios instance const service = axios.create({ baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url // withCredentials: true, // send cookies when cross-domain requests timeout: 15000 // request timeout }) // request interceptor service.interceptors.request.use( config => { // do something before request is sent showFullScreenLoading() config.headers['platform'] = 'app_web_manager' if (store.getters.token) { // let  each request carry token // ['X-Token'] is a custom headers key // please modify it according to the actual situation config.headers['Authorization'] = getToken() } return config }, error => { tryHideFullScreenLoading() // 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 http 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 => { tryHideFullScreenLoading() const res = response.data // if the custom code is not 20000, it is judged as an error. if (res.code ! = = 20000) {Message ({Message: res. Message | | 'failed to get the data, please check the request, type:' error 'duration: 5 * 1000}) / / 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired; if (res.code === 50008 || res.code === 50012 || res.code === 50014) { // to re-login MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', { confirmButtonText: 'Re-Login', cancelButtonText: 'Cancel', type: 'warning' }).then(() => { store.dispatch('user/resetToken').then(() => { location.reload() }) }) } return res.message || 'Failed to get data, Please check the request '} else {return res}}, error => { console.log('err' + error) // for debug console.log('err' + error.response.status) // for debug tryHideFullScreenLoading() if (error && error.response) { switch (error.response.status) { case 400: Error. Message = 'request error' break case 401: error. Message = 'unauthorized access' break case 403: error. Error. The error message = ` request address: address ${error. The response. Config. Url} ` break case 405: error. The message = ` are not allowed to request method ` break case 408: Error. Message = 'server internal error' break case 501: Error. Message = 'service not available' break case 502: error. Message = 'gateway error' break case 503: error. Error. Message = 'Gateway timeout' break case 505: error. Message = 'HTTP version not supported 'break default: break}} message ({message: 'Server response failed, error message: ${error.message}', type: 'error'}) return promise.reject (error)}) export default serviceCopy the code