import axios from 'axios' import { MessageBox, Message } from 'element-ui' import store from '@/store' import usersInfo from '@/utils/usersInfo' import Cookies from 'js-cookie' // 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: 12000 // request timeout }) // request interceptor service.interceptors.request.use( config => { // do something before request is sent // if (store.getters.token) { // let each request carry token // ['X-Token'] is a custom headers key // please modify it according to the actual situation if (usersInfo.accessToken()) { config.headers['Authorization'] = process.env.VUE_APP_ACCESS_TOKEN_PREFIX + usersInfo.accessToken() } // 设置语言 config.headers['language'] = Cookies.get('language') ?? 'en' // } 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 responseData = response.data const data = responseData.data if ((responseData.success === false) || (responseData.code && responseData.code !== 200)) { // Message({ // message: responseData.message || 'Error', // type: 'error', // duration: 5 * 1000 // }) return Promise.reject(responseData.message) } else { if (!data) { return { data: responseData } } return data } }, err => { if (err && err.response && err.response.data && err.response.data.message) { err.message = err.response.data.message } else if (err && err.response) { switch (err.response.data.status) { case 400: err.message = '请求错误' break case 401: err.message = '未授权,请登录' break case 403: err.message = '拒绝访问' break case 404: err.message = `请求地址出错: ${err.response.data.config.url}` break case 408: err.message = '请求超时' break case 500: err.message = '服务器内部错误' break case 501: err.message = '服务未实现' break case 502: err.message = '网关错误' break case 503: err.message = '服务不可用' break case 504: err.message = '网关超时' break case 505: err.message = 'HTTP版本不受支持' break default: } } // Message({ // message: err.message || 'Error', // type: 'error', // duration: 5 * 1000 // }) return Promise.reject(err) } ) export default service