import axios from 'axios' // import store from '@/store' // import { getToken } from '@/utils/auth' import { loginUrl } from '@/apiConfig/requestIP.js' import { Encrypt } from '@/utils/crypto-js.js' import { message } from '@/utils/mesDebounce' import router from '@/router/index.js' // create an axios instance const service = axios.create({ baseURL: '/apis', // url = base url + request url // withCredentials: true, // send cookies when cross-domain requests timeout: 5000, // request timeout withCredentials: true }) axios.defaults.withCredentials = true // 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 // config.headers['X-Token'] = getToken() // } config.headers['secret'] = Encrypt() 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 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 => { const res = response.data if (typeof res.code !== 'undefined' && res.code !== 200 && res.code !== 0) { message({ message: res.msg || 'Error', type: 'error', duration: 5 * 1000 }) } else if (typeof res.retCode !== 'undefined' && res.retCode !== 0) { message({ message: res.retMsg || 'Error', type: 'error', duration: 5 * 1000 }) } return res }, error => { console.log('err' + error) // for debug if (error && error.response) { switch (error.response.status) { case 400: error.message = '错误请求' break case 401: error.message = '未授权,请重新登录' break case 403: error.message = '拒绝访问' break case 404: error.message = '请求错误,未找到该资源' break case 405: error.message = '请求方法未允许' break case 408: error.message = '请求超时' break case 500: error.message = '服务器端出错' break case 501: error.message = '网络未实现' break case 502: error.message = '网络错误' break case 503: error.message = '服务不可用' break case 504: error.message = '网络超时' break case 505: error.message = 'http版本不支持该请求' break default: error.message = `未知错误${error.response.status}` } message({ message: error.message, type: 'warning', duration: 5 * 1000 }) if (error.response.status === 401) { location.href = loginUrl } else if (error.response.status === 403) { router.push({ name: 'notAccess' }) } } else { error.message = '网络请求超时,请检查网络信息!' message({ message: error.message, type: 'warning', duration: 5 * 1000 }) } return Promise.reject(error) } ) export default service