feat: 网络层错误提示判断优化

This commit is contained in:
ZhuRui
2026-08-04 08:51:31 +08:00
parent 1b968f9bed
commit 7661c5c45b
+22 -8
View File
@@ -6,6 +6,9 @@ const DEFAULT_TIMEOUT = 10000;
const activeControllers = new Set<AbortController>(); const activeControllers = new Set<AbortController>();
const getResponseErrorMsg = (data: any, fallback = '请求失败') =>
data?.data?.msg || data?.msg || data?.message || fallback;
/** 统一处理 401 未授权逻辑 */ /** 统一处理 401 未授权逻辑 */
const handleUnauthorized = (msg?: string) => { const handleUnauthorized = (msg?: string) => {
auth.logout(); auth.logout();
@@ -74,20 +77,24 @@ const request = (
activeControllers.delete(controller); activeControllers.delete(controller);
if (res.status === 401) { if (res.status === 401) {
handleUnauthorized(); const errorData = await res.json().catch(() => ({}));
return Promise.reject(new Error('Unauthorized')); const errorMsg = getResponseErrorMsg(errorData, '登录状态已过期,请重新登录');
handleUnauthorized(errorMsg);
return Promise.reject(new Error(errorMsg));
} }
if (res.status === 500) { if (res.status === 500) {
message.error('服务器开小差了,请稍后再试');
const errorData = await res.json().catch(() => ({})); const errorData = await res.json().catch(() => ({}));
return Promise.reject(new Error(errorData.message || '服务器内部错误')); const errorMsg = getResponseErrorMsg(errorData, '服务器开小差了,请稍后再试');
message.error(errorMsg);
return Promise.reject(new Error(errorMsg));
} }
if (!res.ok) { if (!res.ok) {
const errorData = await res.json().catch(() => ({})); const errorData = await res.json().catch(() => ({}));
message.error(errorData.message || '请求失败'); const errorMsg = getResponseErrorMsg(errorData);
return Promise.reject(new Error(errorData.message || '请求失败')); message.error(errorMsg);
return Promise.reject(new Error(errorMsg));
} }
if (options.responseType === 'blob') { if (options.responseType === 'blob') {
@@ -97,8 +104,15 @@ const request = (
const data = await res.json(); const data = await res.json();
if (data.code == 401) { if (data.code == 401) {
handleUnauthorized(data.msg); const errorMsg = getResponseErrorMsg(data, '登录状态已过期,请重新登录');
return Promise.reject(new Error(data.msg || 'Unauthorized')); handleUnauthorized(errorMsg);
return Promise.reject(new Error(errorMsg));
}
if (data.code && data.code !== 200) {
const errorMsg = getResponseErrorMsg(data);
message.error(errorMsg);
return Promise.reject(new Error(errorMsg));
} }
return data; return data;