diff --git a/src/utils/request.ts b/src/utils/request.ts index 34e144bcb79ef697f8cdbc40ecf08750f934f3dc..fd0fdeb636191d59f9628174838e1e3592db82b0 100644 --- a/src/utils/request.ts +++ b/src/utils/request.ts @@ -3,9 +3,10 @@ import { ElMessage } from 'element-plus'; import { Session } from '/@/utils/storage'; import router from '/@/router'; +const url = import.meta.env.VITE_API_URL as any; // Create a new axios instance const service = axios.create({ - baseURL: import.meta.env.VITE_API_URL as any, + baseURL: url, timeout: 30000, headers: { 'Content-Type': 'application/json' }, }); @@ -33,35 +34,37 @@ service.interceptors.response.use( if (response.request.responseType === 'blob') { return res; } - if (res.code && res.code !== 200) { - // Token expired or the account has been logged in elsewhere - if (res.code === 401 || res.code === 4001) { - Session.clear(); // Clear all temporary cache of browser - const route = router.currentRoute.value; - router.push(`/login?redirect=${route.path}¶ms=${JSON.stringify(route.query ? route.query : route.params)}`); - ElMessage.error('登录信息过期,请重新登录'); - // window.location.href = '/'; // Go to the login page - } else { - ElMessage.error(res.message || '接口请求异常'); + if (res.code && res.code !== 0) { + // If tip is set to no in the interface header, no error message will be prompted + if (response?.config?.headers?.tip !== 'no') { + ElMessage.error(res.message); } - return Promise.reject(); - } else { - return res.data; + return Promise.reject(res); } + return res; }, (error) => { + const res = error.response; + if (res.status && res.status !== 200) { + if (res.status === 401) { + Session.clear(); + router.push('/login'); + ElMessage.error('用户登录已过期,请重新登录'); + } + if (res.status === 404) { + ElMessage.error('资源未找到'); + } + } // Response error if (error.message.indexOf('timeout') !== -1) { ElMessage.error('网络超时'); - } else if (error.message == 'Network Error') { + } + if (error.message == 'Network Error') { ElMessage.error('网络连接错误'); - } else { - if (error.response.data) ElMessage.error(error.response.statusText); - else ElMessage.error('接口路径找不到'); } return Promise.reject(error); } ); - +export const baseURL = url; // Export axios instance export default service;