From 7661c5c45b0baec3b2daa2169685288661bf28d5 Mon Sep 17 00:00:00 2001 From: ZhuRui Date: Tue, 4 Aug 2026 08:51:31 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=BD=91=E7=BB=9C=E5=B1=82=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E6=8F=90=E7=A4=BA=E5=88=A4=E6=96=AD=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/request.ts | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/src/utils/request.ts b/src/utils/request.ts index e386511..3a17a8d 100644 --- a/src/utils/request.ts +++ b/src/utils/request.ts @@ -6,6 +6,9 @@ const DEFAULT_TIMEOUT = 10000; const activeControllers = new Set(); +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;