修复:解决测试发现的问题
This commit is contained in:
@@ -1,4 +1,3 @@
|
||||
// 片段示例 - requestInterceptor 更稳健的写法
|
||||
import type { IRequestOptions } from '../types'
|
||||
import { useUserStore } from '@/stores/user'
|
||||
import { APP_INFO } from '@/api/config'
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// api/interceptors/response.ts
|
||||
import type { IApiResponse } from '../types';
|
||||
import { t } from '@/utils/i18n'
|
||||
|
||||
/**
|
||||
* 响应拦截器:严格兼容原项目返回约定
|
||||
@@ -12,23 +12,24 @@ import type { IApiResponse } from '../types';
|
||||
*/
|
||||
|
||||
function handleAuthExpired() {
|
||||
// 清空本地登录信息(保持与原项目一致)
|
||||
// 清空本地登录信息
|
||||
try {
|
||||
uni.removeStorageSync('userInfo');
|
||||
} catch (e) {}
|
||||
// 跳转 login,与原项目保持一致的路径
|
||||
// 在小程序/APP/H5 情况下原项目分别做了适配,简单通用处理如下:
|
||||
uni.showToast({ title: '登录失效,请重新登录', icon: 'none' });
|
||||
uni.showToast({ title: t('global.loginExpired'), icon: 'none' });
|
||||
setTimeout(() => {
|
||||
uni.navigateTo({ url: '/pages/login/login' });
|
||||
uni.reLaunch({ url: '/pages/login/login' });
|
||||
}, 600);
|
||||
}
|
||||
|
||||
export function responseInterceptor(res: UniApp.RequestSuccessCallbackResult) {
|
||||
// 先处理非 200 的 http 状态
|
||||
if (res.statusCode && res.statusCode !== 200) {
|
||||
const msg = `网络错误(${res.statusCode})`;
|
||||
uni.showToast({ title: msg, icon: 'none' });
|
||||
const msg = `${t('global.networkConnectionError')} (${res.statusCode})`;
|
||||
setTimeout(() => {
|
||||
uni.showToast({ title: msg, icon: 'none' });
|
||||
}, 10);
|
||||
return Promise.reject({ statusCode: res.statusCode, errMsg: msg, response: res });
|
||||
}
|
||||
|
||||
@@ -59,17 +60,17 @@ export function responseInterceptor(res: UniApp.RequestSuccessCallbackResult) {
|
||||
if (code === '401' || code === 401) {
|
||||
// 触发登出流程
|
||||
handleAuthExpired();
|
||||
return Promise.reject({ statusCode: 0, errMsg: '登录失效', data: httpData });
|
||||
return Promise.reject({ statusCode: 0, errMsg: t('global.loginExpired'), data: httpData });
|
||||
}
|
||||
|
||||
// 原项目还将 1000,1001,1100,402 等视作需要强制登录
|
||||
if (code === '1000' || code === '1001' || code === 1000 || code === 1001 || code === 1100 || code === '402' || code === 402) {
|
||||
handleAuthExpired();
|
||||
return Promise.reject({ statusCode: 0, errMsg: message || '请登录', data: httpData });
|
||||
return Promise.reject({ statusCode: 0, errMsg: message || t('global.loginExpired'), data: httpData });
|
||||
}
|
||||
|
||||
// 其他后端业务错误:toast 并 reject
|
||||
const errMsg = message || '请求异常';
|
||||
const errMsg = message || t('global.requestException');
|
||||
if (errMsg) {
|
||||
uni.showToast({ title: errMsg, icon: 'none' });
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user