feat: 网络层错误提示判断优化
This commit is contained in:
+22
-8
@@ -6,6 +6,9 @@ const DEFAULT_TIMEOUT = 10000;
|
||||
|
||||
const activeControllers = new Set<AbortController>();
|
||||
|
||||
const getResponseErrorMsg = (data: any, fallback = '请求失败') =>
|
||||
data?.data?.msg || data?.msg || data?.message || fallback;
|
||||
|
||||
/** 统一处理 401 未授权逻辑 */
|
||||
const handleUnauthorized = (msg?: string) => {
|
||||
auth.logout();
|
||||
@@ -74,20 +77,24 @@ const request = (
|
||||
activeControllers.delete(controller);
|
||||
|
||||
if (res.status === 401) {
|
||||
handleUnauthorized();
|
||||
return Promise.reject(new Error('Unauthorized'));
|
||||
const errorData = await res.json().catch(() => ({}));
|
||||
const errorMsg = getResponseErrorMsg(errorData, '登录状态已过期,请重新登录');
|
||||
handleUnauthorized(errorMsg);
|
||||
return Promise.reject(new Error(errorMsg));
|
||||
}
|
||||
|
||||
if (res.status === 500) {
|
||||
message.error('服务器开小差了,请稍后再试');
|
||||
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) {
|
||||
const errorData = await res.json().catch(() => ({}));
|
||||
message.error(errorData.message || '请求失败');
|
||||
return Promise.reject(new Error(errorData.message || '请求失败'));
|
||||
const errorMsg = getResponseErrorMsg(errorData);
|
||||
message.error(errorMsg);
|
||||
return Promise.reject(new Error(errorMsg));
|
||||
}
|
||||
|
||||
if (options.responseType === 'blob') {
|
||||
@@ -97,8 +104,15 @@ const request = (
|
||||
const data = await res.json();
|
||||
|
||||
if (data.code == 401) {
|
||||
handleUnauthorized(data.msg);
|
||||
return Promise.reject(new Error(data.msg || 'Unauthorized'));
|
||||
const errorMsg = getResponseErrorMsg(data, '登录状态已过期,请重新登录');
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user