import store from '@/store' import { getRefreshToken, getToken } from '@/utils/auth' import axios from 'axios' import { Message } from 'element-ui' // create an axios instance const service = axios.create({ baseURL: process.env.NODE_ENV === 'development' ? window.appConfig.baseUrlOffLine : window.appConfig.baseUrlOnLine, // process.env.VUE_APP_BASE_API, // url = base url + request url // baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url // withCredentials: true, // send cookies when cross-domain requests timeout: 5000 // request timeout }) // request interceptor service.interceptors.request.use( config => { // do something before request is sent // console.log(config); // if (config.url.indexOf("/user/") > -1) { // config.baseURL = process.env.VUE_APP_BASE_API; // } // console.log(store.getters.token) if (store.getters.token) { config.headers['Authorization'] = 'Bearer ' + getToken() config.headers['x-accesstoken'] = getRefreshToken() } return config }, error => { // do something with request error console.log(error) // for debug return Promise.reject(error) } ) // response interceptor service.interceptors.response.use( response => { const res = response.data if (res.code !== 'Success') { if (res.msg === '' || res.msg === null || res.msg === undefined) { return } Message({ message: res.msg || 'Error', type: 'error', duration: 5 * 1000 }) return Promise.reject(new Error(res.msg || 'Error')) } else { return res } }, error => { // console.log(error.response) let errorMessage = '请求错误' if (error.response) { if (error.response.data.code === '401') { Message({ message: '用户超时,请重新登录', type: 'error', duration: 5 * 1000 }) store.dispatch('user/logout') location.reload() return } errorMessage = `请求失败:${error.response.status} - ${error.response.data?.msg || error.response.statusText}` // console.log(errorMessage); } else if (error.request) { errorMessage = '服务器未响应,请检查网络连接' } else { errorMessage = error.message || '未知错误' } Message({ message: errorMessage, type: 'error', duration: 5 * 1000 }) return Promise.reject(error) } ) export default service