import axios from 'axios' import { Message } from 'element-ui' console.log(window) const service = axios.create({ baseURL: window?._BASE_CONFIG?.API || '/api', withCredentials: true }) /** * 请求拦截器 * 统一处理请求拦截,如:添加token等 */ service.interceptors.request.use( (config) => { return config }, (error) => { return Promise.reject(error) } ) /** * 响应拦截器 * 统一处理响应拦截 * 如:重定向、消息提示等操作 */ service.interceptors.response.use( async (response) => { const { data } = response if (data?.code) { if (data.code !== '0000') { Message({ message: data.msg || 'Error', type: 'error', duration: 5 * 1000 }) return Promise.reject(new Error(data.msg || 'Error')) } else { return data } } else if (data.type === 'application/octet-stream') { return response } else if (data.type === 'application/json') { const resData = JSON.parse(await data.text()) console.log(resData) // 根据后端返回code码进行处理 if (resData.code !== '0000') { Message({ message: resData.msg || 'Error', type: 'error', duration: 5 * 1000 }) return Promise.reject(new Error(resData.msg || 'Error')) } else { return resData } } }, (error) => { const { response } = error if (response?.status === 401) { window.location = response.data return } Message({ message: error.message, type: 'error', duration: 5 * 1000 }) return Promise.reject(error) } ) const request = (requestObj) => { const { url, method, data = {}, timeout, params, responseType } = requestObj return service({ url, method: method || 'post', data, timeout: timeout || 300000, params: params || (method && method.toLowerCase() === 'get' ? data : {}), responseType: responseType || 'json' }) } export default request