refactor: small refactor in @vben-core/request
parent
d62a3da009
commit
2c79ac1e6c
|
@ -92,10 +92,9 @@ function setupAccessGuard(router: Router) {
|
|||
|
||||
// 生成路由表
|
||||
// 当前登录用户拥有的角色标识列表
|
||||
let userRoles: string[] = [];
|
||||
const userInfo =
|
||||
accessStore.userInfo || (await accessStore.fetchUserInfo());
|
||||
userRoles = userInfo.roles ?? [];
|
||||
const userRoles = userInfo.roles ?? [];
|
||||
|
||||
// 生成菜单和路由
|
||||
const { accessibleMenus, accessibleRoutes } = await generateAccess({
|
||||
|
|
|
@ -6,7 +6,11 @@ import type {
|
|||
InternalAxiosRequestConfig,
|
||||
} from 'axios';
|
||||
|
||||
import type { MakeAuthorizationFn, RequestClientOptions } from './types';
|
||||
import type {
|
||||
MakeAuthorizationFn,
|
||||
MakeErrorMessageFn,
|
||||
RequestClientOptions,
|
||||
} from './types';
|
||||
|
||||
import { $t } from '@vben-core/locales';
|
||||
import { merge } from '@vben-core/toolkit';
|
||||
|
@ -20,7 +24,8 @@ import { FileUploader } from './modules/uploader';
|
|||
class RequestClient {
|
||||
private instance: AxiosInstance;
|
||||
private makeAuthorization: MakeAuthorizationFn | undefined;
|
||||
private options: RequestClientOptions;
|
||||
private makeErrorMessage: MakeErrorMessageFn | undefined;
|
||||
|
||||
public addRequestInterceptor: InterceptorManager['addRequestInterceptor'];
|
||||
public addResponseInterceptor: InterceptorManager['addResponseInterceptor'];
|
||||
public download: FileDownloader['download'];
|
||||
|
@ -40,12 +45,12 @@ class RequestClient {
|
|||
// 默认超时时间
|
||||
timeout: 10_000,
|
||||
};
|
||||
const { makeAuthorization, ...axiosConfig } = options;
|
||||
this.options = options;
|
||||
const { makeAuthorization, makeErrorMessage, ...axiosConfig } = options;
|
||||
const requestConfig = merge(axiosConfig, defaultConfig);
|
||||
|
||||
this.instance = axios.create(requestConfig);
|
||||
this.makeAuthorization = makeAuthorization;
|
||||
this.makeErrorMessage = makeErrorMessage;
|
||||
|
||||
// 实例化拦截器管理器
|
||||
const interceptorManager = new InterceptorManager(this.instance);
|
||||
|
@ -111,9 +116,8 @@ class RequestClient {
|
|||
} else if (error?.message?.includes?.('timeout')) {
|
||||
errMsg = $t('fallback.http.requestTimeout');
|
||||
}
|
||||
const { makeAuthorization, makeErrorMessage } = this.options;
|
||||
if (errMsg) {
|
||||
makeErrorMessage?.(errMsg);
|
||||
this.makeErrorMessage?.(errMsg);
|
||||
return Promise.reject(error);
|
||||
}
|
||||
|
||||
|
@ -128,7 +132,7 @@ class RequestClient {
|
|||
|
||||
case 401: {
|
||||
errorMessage = $t('fallback.http.unauthorized');
|
||||
makeAuthorization?.().unAuthorizedHandler?.();
|
||||
this.makeAuthorization?.().unAuthorizedHandler?.();
|
||||
break;
|
||||
}
|
||||
case 403: {
|
||||
|
@ -150,7 +154,7 @@ class RequestClient {
|
|||
}
|
||||
}
|
||||
|
||||
makeErrorMessage?.(errorMessage);
|
||||
this.makeErrorMessage?.(errorMessage);
|
||||
return Promise.reject(error);
|
||||
},
|
||||
);
|
||||
|
|
|
@ -16,7 +16,7 @@ type MakeAuthorizationFn = (
|
|||
config?: InternalAxiosRequestConfig,
|
||||
) => MakeAuthorization;
|
||||
|
||||
type ErrorMessageFn = (message: string) => void;
|
||||
type MakeErrorMessageFn = (message: string) => void;
|
||||
|
||||
interface RequestClientOptions extends CreateAxiosDefaults {
|
||||
/**
|
||||
|
@ -26,7 +26,7 @@ interface RequestClientOptions extends CreateAxiosDefaults {
|
|||
/**
|
||||
* 用于生成错误消息
|
||||
*/
|
||||
makeErrorMessage?: ErrorMessageFn;
|
||||
makeErrorMessage?: MakeErrorMessageFn;
|
||||
}
|
||||
|
||||
interface HttpResponse<T = any> {
|
||||
|
@ -42,6 +42,7 @@ interface HttpResponse<T = any> {
|
|||
export type {
|
||||
HttpResponse,
|
||||
MakeAuthorizationFn,
|
||||
MakeErrorMessageFn,
|
||||
RequestClientOptions,
|
||||
RequestContentType,
|
||||
};
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
// 修改过的button
|
||||
export * from './alert-dialog';
|
||||
export * from './avatar';
|
||||
export * from './back-top';
|
||||
|
|
Loading…
Reference in New Issue