优化响应拦截器逻辑

This commit is contained in:
Hooray
2025-08-08 17:44:58 +08:00
parent 48772f9003
commit 7c3d3820c2
+13 -14
View File
@@ -70,42 +70,41 @@ api.interceptors.response.use(
* 规则是当 status 为 1 时表示请求成功,为 0 时表示接口需要登录或者登录状态失效,需要重新登录
* 请求出错时 error 会返回错误信息
*/
if (response.data.status === 1) {
if (response.data.error !== '') {
toast.warning('Warning', {
description: response.data.error,
})
return Promise.reject(response.data)
if (typeof response.data === 'object') {
if (response.data.status === 1) {
if (response.data.error !== '') {
toast.warning('Warning', {
description: response.data.error,
})
return Promise.reject(response.data)
}
}
else {
useUserStore().requestLogout()
}
return Promise.resolve(response.data)
}
else {
useUserStore().requestLogout()
return Promise.reject(response.data)
}
return Promise.resolve(response.data)
},
async (error) => {
// 获取请求配置
const config = error.config
// 如果配置不存在或未启用重试,则直接处理错误
if (!config || !config.retry) {
return handleError(error)
}
// 设置重试次数
config.retryCount = config.retryCount || 0
// 判断是否超过重试次数
if (config.retryCount >= MAX_RETRY_COUNT) {
return handleError(error)
}
// 重试次数自增
config.retryCount += 1
// 延迟重试
await new Promise(resolve => setTimeout(resolve, RETRY_DELAY))
// 重新发起请求
return api(config)
},