1
1
/**
2
2
* 该文件可自行根据业务逻辑进行调整
3
3
*/
4
- import type { HttpResponse } from '@vben/request' ;
4
+ import type { RequestClientOptions } from '@vben/request' ;
5
5
6
6
import { useAppConfig } from '@vben/hooks' ;
7
7
import { preferences } from '@vben/preferences' ;
8
8
import {
9
9
authenticateResponseInterceptor ,
10
+ defaultResponseInterceptor ,
10
11
errorMessageResponseInterceptor ,
11
12
RequestClient ,
12
13
} from '@vben/request' ;
13
14
import { useAccessStore } from '@vben/stores' ;
14
15
15
16
import { message } from 'ant-design-vue' ;
16
17
17
- import { refreshTokenApi } from '#/api/auth' ;
18
18
import { useAuthStore } from '#/store' ;
19
19
20
+ import { refreshTokenApi } from './core' ;
21
+
20
22
const { apiURL } = useAppConfig ( import . meta. env , import . meta. env . PROD ) ;
21
23
22
- function createRequestClient ( baseURL : string ) {
24
+ function createRequestClient ( baseURL : string , options ?: RequestClientOptions ) {
23
25
const client = new RequestClient ( {
26
+ ...options ,
24
27
baseURL,
25
28
} ) ;
26
29
@@ -68,19 +71,14 @@ function createRequestClient(baseURL: string) {
68
71
} ,
69
72
} ) ;
70
73
71
- // response数据解构
72
- client . addResponseInterceptor < HttpResponse > ( {
73
- fulfilled : ( response ) => {
74
- const { data : responseData , status } = response ;
75
-
76
- const { code, data } = responseData ;
77
- if ( status >= 200 && status < 400 && code === 200 ) {
78
- return data ;
79
- }
80
-
81
- throw Object . assign ( { } , response , { response } ) ;
82
- } ,
83
- } ) ;
74
+ // 处理返回的响应数据格式
75
+ client . addResponseInterceptor (
76
+ defaultResponseInterceptor ( {
77
+ codeField : 'code' ,
78
+ dataField : 'data' ,
79
+ successCode : 0 ,
80
+ } ) ,
81
+ ) ;
84
82
85
83
// token过期的处理
86
84
client . addResponseInterceptor (
@@ -96,15 +94,20 @@ function createRequestClient(baseURL: string) {
96
94
// 通用的错误处理,如果没有进入上面的错误处理逻辑,就会进入这里
97
95
client . addResponseInterceptor (
98
96
errorMessageResponseInterceptor ( ( msg : string , error ) => {
97
+ // 这里可以根据业务进行定制,你可以拿到 error 内的信息进行定制化处理,根据不同的 code 做不同的提示,而不是直接使用 message.error 提示 msg
98
+ // 当前mock接口返回的错误字段是 error 或者 message
99
99
const responseData = error ?. response ?. data ?? { } ;
100
100
const errorMessage = responseData ?. error ?? responseData ?. message ?? '' ;
101
+ // 如果没有错误信息,则会根据状态码进行提示
101
102
message . error ( errorMessage || msg ) ;
102
103
} ) ,
103
104
) ;
104
105
105
106
return client ;
106
107
}
107
108
108
- export const requestClient = createRequestClient ( apiURL ) ;
109
+ export const requestClient = createRequestClient ( apiURL , {
110
+ responseReturn : 'data' ,
111
+ } ) ;
109
112
110
113
export const baseRequestClient = new RequestClient ( { baseURL : apiURL } ) ;
0 commit comments