import axios from 'axios'; import store from '@/store'; import { Message } from 'element-ui'; import { getToken } from '@/utils/auth'; axios.defaults.withCredentials = true; // 跨域请求时是否需要使用凭证 axios.defaults.dataType = 'json'; axios.defaults.headers['cache-control'] = 'no-cache'; axios.defaults.headers['Content-Type'] = 'application/json'; axios.defaults.headers['X-Requested-With'] = 'XMLHttpRequest'; const service = axios.create({ baseURL: process.env.VUE_APP_BASE_API, // withCredentials: true, // 跨域请求时发送 cookies timeout: 10000 }); // 请求拦截器 service.interceptors.request.use( config => { config.headers['Content-Type'] = 'application/json'; return config; }, error => { return Promise.reject(error); } ); // 响应拦截器 service.interceptors.response.use( response => { const res = response.data; if (res.code === 404) { Message({ message: '请求的资源不存在', type: 'error', duration: 3 * 1000 }); return Promise.reject(new Error(res.message || 'Error')); } // 返回数据失败 if (res.status === 0) { Message({ message: res.error, type: 'error', duration: 3 * 1000 }); return Promise.reject(new Error(res.error || 'Error')); } // 无效的操作用户 if (res.status === -1) { Message({ message: res.error, type: 'error', duration: 3 * 1000 }); store.dispatch('user/resetSessionID').then(() => { window.location.href = '/'; }); return Promise.reject(new Error(res.error || 'Error')); } return res; }, error => { Message({ message: error.message, type: 'error', duration: 3 * 1000 }); return Promise.reject(error); } ); /** * 得到必需的请求参数 * @param {String} MethodName 请求方法名 * * @returns {Object} 返回必需的请求参数 * */ export function getRequestParams(MethodName) { const { token, isHas } = getToken(); return { MethodName, UserCode: isHas ? token.user_code : '', UserType: isHas ? token.user_type : '', SessionID: isHas ? token.session_id : '' }; } export { service as request };