@be-link/http 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/BeLinkHttp.d.ts +115 -19
- package/dist/BeLinkHttp.d.ts.map +1 -1
- package/dist/adapters/AxiosAdapter.d.ts +40 -0
- package/dist/adapters/AxiosAdapter.d.ts.map +1 -0
- package/dist/adapters/TaroAdapter.d.ts +68 -0
- package/dist/adapters/TaroAdapter.d.ts.map +1 -0
- package/dist/adapters/index.d.ts +11 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/types.d.ts +136 -0
- package/dist/adapters/types.d.ts.map +1 -0
- package/dist/index.cjs.js +536 -217
- package/dist/index.d.ts +35 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +534 -218
- package/dist/interceptors/core.d.ts +58 -0
- package/dist/interceptors/core.d.ts.map +1 -0
- package/dist/services/TimeSyncService.d.ts +36 -1
- package/dist/services/TimeSyncService.d.ts.map +1 -1
- package/dist/types.d.ts +24 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/BeLinkHttp.d.ts
CHANGED
|
@@ -3,10 +3,11 @@
|
|
|
3
3
|
*
|
|
4
4
|
* 单例模式的 HTTP 请求客户端
|
|
5
5
|
* 支持时间同步和 Token 加密
|
|
6
|
+
* 支持 Axios 和 Taro.request 两种请求引擎
|
|
6
7
|
*
|
|
7
8
|
* @module BeLinkHttp
|
|
8
9
|
*
|
|
9
|
-
* @example
|
|
10
|
+
* @example Axios 模式(默认)
|
|
10
11
|
* ```ts
|
|
11
12
|
* import { beLinkHttp } from '@be-link/http';
|
|
12
13
|
*
|
|
@@ -21,27 +22,52 @@
|
|
|
21
22
|
* // 发起请求
|
|
22
23
|
* const data = await beLinkHttp.get('/api/users');
|
|
23
24
|
* ```
|
|
25
|
+
*
|
|
26
|
+
* @example Taro 模式
|
|
27
|
+
* ```ts
|
|
28
|
+
* import { beLinkHttp } from '@be-link/http';
|
|
29
|
+
* import Taro from '@tarojs/taro';
|
|
30
|
+
*
|
|
31
|
+
* // 初始化
|
|
32
|
+
* beLinkHttp.init({
|
|
33
|
+
* adapter: 'taro',
|
|
34
|
+
* taroRequest: Taro.request,
|
|
35
|
+
* baseURL: 'https://api.example.com',
|
|
36
|
+
* getToken: () => Taro.getStorageSync('token'),
|
|
37
|
+
* });
|
|
38
|
+
*
|
|
39
|
+
* // 发起请求(使用方式完全一致)
|
|
40
|
+
* const data = await beLinkHttp.get('/api/users');
|
|
41
|
+
* ```
|
|
24
42
|
*/
|
|
25
|
-
import { AxiosInstance
|
|
43
|
+
import type { AxiosInstance } from 'axios';
|
|
44
|
+
import type { AdapterRequestConfig } from './adapters/types';
|
|
26
45
|
import type { IApiResponse, RequestOptions } from './types';
|
|
27
46
|
import { TimeSyncService, EncryptionService } from './services';
|
|
28
47
|
/**
|
|
29
48
|
* BeLinkHttp 单例类
|
|
30
49
|
*
|
|
31
50
|
* 提供统一的 HTTP 请求接口,支持:
|
|
51
|
+
* - 多适配器(Axios / Taro)
|
|
32
52
|
* - 时间同步
|
|
33
53
|
* - Token 加密
|
|
34
54
|
* - 请求/响应拦截
|
|
35
55
|
*/
|
|
36
56
|
declare class BeLinkHttp {
|
|
37
|
-
/**
|
|
38
|
-
private
|
|
57
|
+
/** HTTP 适配器实例 */
|
|
58
|
+
private adapter;
|
|
39
59
|
/** 时间同步服务 */
|
|
40
60
|
private timeSyncService;
|
|
41
61
|
/** 加密服务 */
|
|
42
62
|
private encryptionService;
|
|
63
|
+
/** 请求配置选项 */
|
|
64
|
+
private options;
|
|
43
65
|
/** 是否已初始化 */
|
|
44
66
|
private initialized;
|
|
67
|
+
/** 动态设置的 Token */
|
|
68
|
+
private _token;
|
|
69
|
+
/** 动态设置的 UserId */
|
|
70
|
+
private _userId;
|
|
45
71
|
/**
|
|
46
72
|
* 初始化请求客户端
|
|
47
73
|
*
|
|
@@ -49,7 +75,7 @@ declare class BeLinkHttp {
|
|
|
49
75
|
*
|
|
50
76
|
* @param options - 请求配置选项
|
|
51
77
|
*
|
|
52
|
-
* @example
|
|
78
|
+
* @example Axios 模式
|
|
53
79
|
* ```ts
|
|
54
80
|
* beLinkHttp.init({
|
|
55
81
|
* baseURL: 'https://api.example.com',
|
|
@@ -65,6 +91,18 @@ declare class BeLinkHttp {
|
|
|
65
91
|
* getUserId: () => localStorage.getItem('userId'),
|
|
66
92
|
* });
|
|
67
93
|
* ```
|
|
94
|
+
*
|
|
95
|
+
* @example Taro 模式
|
|
96
|
+
* ```ts
|
|
97
|
+
* import Taro from '@tarojs/taro';
|
|
98
|
+
*
|
|
99
|
+
* beLinkHttp.init({
|
|
100
|
+
* adapter: 'taro',
|
|
101
|
+
* taroRequest: Taro.request,
|
|
102
|
+
* baseURL: 'https://api.example.com',
|
|
103
|
+
* getToken: () => Taro.getStorageSync('token'),
|
|
104
|
+
* });
|
|
105
|
+
* ```
|
|
68
106
|
*/
|
|
69
107
|
init(options: RequestOptions): void;
|
|
70
108
|
/**
|
|
@@ -75,7 +113,7 @@ declare class BeLinkHttp {
|
|
|
75
113
|
* GET 请求
|
|
76
114
|
*
|
|
77
115
|
* @param url - 请求 URL
|
|
78
|
-
* @param config -
|
|
116
|
+
* @param config - 可选的请求配置
|
|
79
117
|
* @returns Promise 响应数据
|
|
80
118
|
*
|
|
81
119
|
* @example
|
|
@@ -84,13 +122,13 @@ declare class BeLinkHttp {
|
|
|
84
122
|
* const user = await beLinkHttp.get('/api/users/1', { params: { include: 'profile' } });
|
|
85
123
|
* ```
|
|
86
124
|
*/
|
|
87
|
-
get<T>(url: string, config?:
|
|
125
|
+
get<T>(url: string, config?: Partial<AdapterRequestConfig>): Promise<IApiResponse<T>>;
|
|
88
126
|
/**
|
|
89
127
|
* POST 请求
|
|
90
128
|
*
|
|
91
129
|
* @param url - 请求 URL
|
|
92
130
|
* @param data - 请求体数据
|
|
93
|
-
* @param config -
|
|
131
|
+
* @param config - 可选的请求配置
|
|
94
132
|
* @returns Promise 响应数据
|
|
95
133
|
*
|
|
96
134
|
* @example
|
|
@@ -98,13 +136,13 @@ declare class BeLinkHttp {
|
|
|
98
136
|
* const result = await beLinkHttp.post('/api/users', { name: '张三', age: 25 });
|
|
99
137
|
* ```
|
|
100
138
|
*/
|
|
101
|
-
post<T>(url: string, data?: any, config?:
|
|
139
|
+
post<T>(url: string, data?: any, config?: Partial<AdapterRequestConfig>): Promise<IApiResponse<T>>;
|
|
102
140
|
/**
|
|
103
141
|
* PUT 请求
|
|
104
142
|
*
|
|
105
143
|
* @param url - 请求 URL
|
|
106
144
|
* @param data - 请求体数据
|
|
107
|
-
* @param config -
|
|
145
|
+
* @param config - 可选的请求配置
|
|
108
146
|
* @returns Promise 响应数据
|
|
109
147
|
*
|
|
110
148
|
* @example
|
|
@@ -112,13 +150,13 @@ declare class BeLinkHttp {
|
|
|
112
150
|
* const result = await beLinkHttp.put('/api/users/1', { name: '李四' });
|
|
113
151
|
* ```
|
|
114
152
|
*/
|
|
115
|
-
put<T>(url: string, data?: any, config?:
|
|
153
|
+
put<T>(url: string, data?: any, config?: Partial<AdapterRequestConfig>): Promise<IApiResponse<T>>;
|
|
116
154
|
/**
|
|
117
155
|
* PATCH 请求
|
|
118
156
|
*
|
|
119
157
|
* @param url - 请求 URL
|
|
120
158
|
* @param data - 请求体数据
|
|
121
|
-
* @param config -
|
|
159
|
+
* @param config - 可选的请求配置
|
|
122
160
|
* @returns Promise 响应数据
|
|
123
161
|
*
|
|
124
162
|
* @example
|
|
@@ -126,12 +164,12 @@ declare class BeLinkHttp {
|
|
|
126
164
|
* const result = await beLinkHttp.patch('/api/users/1', { age: 26 });
|
|
127
165
|
* ```
|
|
128
166
|
*/
|
|
129
|
-
patch<T>(url: string, data?: any, config?:
|
|
167
|
+
patch<T>(url: string, data?: any, config?: Partial<AdapterRequestConfig>): Promise<IApiResponse<T>>;
|
|
130
168
|
/**
|
|
131
169
|
* DELETE 请求
|
|
132
170
|
*
|
|
133
171
|
* @param url - 请求 URL
|
|
134
|
-
* @param config -
|
|
172
|
+
* @param config - 可选的请求配置
|
|
135
173
|
* @returns Promise 响应数据
|
|
136
174
|
*
|
|
137
175
|
* @example
|
|
@@ -139,24 +177,24 @@ declare class BeLinkHttp {
|
|
|
139
177
|
* await beLinkHttp.delete('/api/users/1');
|
|
140
178
|
* ```
|
|
141
179
|
*/
|
|
142
|
-
delete<T>(url: string, config?:
|
|
180
|
+
delete<T>(url: string, config?: Partial<AdapterRequestConfig>): Promise<IApiResponse<T>>;
|
|
143
181
|
/**
|
|
144
182
|
* 通用请求方法
|
|
145
183
|
*
|
|
146
|
-
* @param config -
|
|
184
|
+
* @param config - 请求配置
|
|
147
185
|
* @returns Promise 响应数据
|
|
148
186
|
*
|
|
149
187
|
* @example
|
|
150
188
|
* ```ts
|
|
151
189
|
* const result = await beLinkHttp.request({
|
|
152
|
-
* method: '
|
|
190
|
+
* method: 'POST',
|
|
153
191
|
* url: '/api/users',
|
|
154
192
|
* data: { name: '张三' },
|
|
155
193
|
* headers: { 'X-Custom': 'value' },
|
|
156
194
|
* });
|
|
157
195
|
* ```
|
|
158
196
|
*/
|
|
159
|
-
request<T>(config:
|
|
197
|
+
request<T>(config: AdapterRequestConfig): Promise<IApiResponse<T>>;
|
|
160
198
|
/**
|
|
161
199
|
* 获取时间同步服务实例
|
|
162
200
|
*
|
|
@@ -172,9 +210,67 @@ declare class BeLinkHttp {
|
|
|
172
210
|
/**
|
|
173
211
|
* 获取 Axios 实例
|
|
174
212
|
*
|
|
175
|
-
*
|
|
213
|
+
* 仅在使用 axios 适配器时有效
|
|
214
|
+
*
|
|
215
|
+
* @returns Axios 实例,非 axios 适配器或未初始化时返回 null
|
|
176
216
|
*/
|
|
177
217
|
getAxiosInstance(): AxiosInstance | null;
|
|
218
|
+
/**
|
|
219
|
+
* 获取当前适配器类型
|
|
220
|
+
*
|
|
221
|
+
* @returns 适配器类型,未初始化时返回 null
|
|
222
|
+
*/
|
|
223
|
+
getAdapterType(): 'axios' | 'taro' | null;
|
|
224
|
+
/**
|
|
225
|
+
* 设置 Token
|
|
226
|
+
*
|
|
227
|
+
* 动态更新请求时使用的 Token,会覆盖 init 时传入的 getToken 返回值
|
|
228
|
+
*
|
|
229
|
+
* @param token - 新的 Token 值,传入 null 则清除
|
|
230
|
+
*
|
|
231
|
+
* @example
|
|
232
|
+
* ```ts
|
|
233
|
+
* // 登录后设置 Token
|
|
234
|
+
* beLinkHttp.setToken('new-token-value');
|
|
235
|
+
*
|
|
236
|
+
* // 登出时清除 Token
|
|
237
|
+
* beLinkHttp.setToken(null);
|
|
238
|
+
* ```
|
|
239
|
+
*/
|
|
240
|
+
setToken(token: string | null): void;
|
|
241
|
+
/**
|
|
242
|
+
* 设置 UserId
|
|
243
|
+
*
|
|
244
|
+
* 动态更新请求时使用的 UserId,会覆盖 init 时传入的 getUserId 返回值
|
|
245
|
+
*
|
|
246
|
+
* @param userId - 新的 UserId 值,传入 null 则清除
|
|
247
|
+
*
|
|
248
|
+
* @example
|
|
249
|
+
* ```ts
|
|
250
|
+
* // 登录后设置 UserId
|
|
251
|
+
* beLinkHttp.setUserId('user-123');
|
|
252
|
+
*
|
|
253
|
+
* // 登出时清除 UserId
|
|
254
|
+
* beLinkHttp.setUserId(null);
|
|
255
|
+
* ```
|
|
256
|
+
*/
|
|
257
|
+
setUserId(userId: string | null): void;
|
|
258
|
+
/**
|
|
259
|
+
* 获取当前 Token
|
|
260
|
+
*
|
|
261
|
+
* 优先返回通过 setToken 设置的值,否则调用 init 时传入的 getToken 函数
|
|
262
|
+
*
|
|
263
|
+
* @returns 当前 Token 值
|
|
264
|
+
*/
|
|
265
|
+
getToken(): string | null;
|
|
266
|
+
/**
|
|
267
|
+
* 获取当前 UserId
|
|
268
|
+
*
|
|
269
|
+
* 优先返回通过 setUserId 设置的值,否则调用 init 时传入的 getUserId 函数
|
|
270
|
+
*
|
|
271
|
+
* @returns 当前 UserId 值
|
|
272
|
+
*/
|
|
273
|
+
getUserId(): string | null;
|
|
178
274
|
/**
|
|
179
275
|
* 重置客户端
|
|
180
276
|
*
|
package/dist/BeLinkHttp.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BeLinkHttp.d.ts","sourceRoot":"","sources":["../src/BeLinkHttp.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"BeLinkHttp.d.ts","sourceRoot":"","sources":["../src/BeLinkHttp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Axios 适配器
|
|
3
|
+
*
|
|
4
|
+
* 使用 Axios 实现 HttpAdapter 接口
|
|
5
|
+
*
|
|
6
|
+
* @module adapters/AxiosAdapter
|
|
7
|
+
*/
|
|
8
|
+
import { AxiosInstance } from 'axios';
|
|
9
|
+
import type { AdapterConfig, AdapterRequestConfig, AdapterResponse, HttpAdapter } from './types';
|
|
10
|
+
/**
|
|
11
|
+
* Axios 适配器
|
|
12
|
+
*
|
|
13
|
+
* 将 Axios 封装为统一的 HttpAdapter 接口
|
|
14
|
+
*/
|
|
15
|
+
export declare class AxiosAdapter implements HttpAdapter {
|
|
16
|
+
/** Axios 实例 */
|
|
17
|
+
private instance;
|
|
18
|
+
/**
|
|
19
|
+
* 创建 Axios 适配器实例
|
|
20
|
+
*
|
|
21
|
+
* @param config - 适配器配置
|
|
22
|
+
*/
|
|
23
|
+
constructor(config: AdapterConfig);
|
|
24
|
+
/**
|
|
25
|
+
* 发起 HTTP 请求
|
|
26
|
+
*
|
|
27
|
+
* @param config - 请求配置
|
|
28
|
+
* @returns Promise 响应数据
|
|
29
|
+
*/
|
|
30
|
+
request<T = any>(config: AdapterRequestConfig): Promise<AdapterResponse<T>>;
|
|
31
|
+
/**
|
|
32
|
+
* 获取 Axios 实例
|
|
33
|
+
*
|
|
34
|
+
* 用于直接访问 Axios 实例进行高级操作
|
|
35
|
+
*
|
|
36
|
+
* @returns Axios 实例
|
|
37
|
+
*/
|
|
38
|
+
getAxiosInstance(): AxiosInstance;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=AxiosAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AxiosAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/AxiosAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAc,EAAE,aAAa,EAAsB,MAAM,OAAO,CAAC;AAEjE,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEjG;;;;GAIG;AACH,qBAAa,YAAa,YAAW,WAAW;IAC9C,eAAe;IACf,OAAO,CAAC,QAAQ,CAAgB;IAEhC;;;;OAIG;gBACS,MAAM,EAAE,aAAa;IAWjC;;;;;OAKG;IACU,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAmBxF;;;;;;OAMG;IACI,gBAAgB,IAAI,aAAa;CAGzC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Taro 适配器
|
|
3
|
+
*
|
|
4
|
+
* 使用 Taro.request 实现 HttpAdapter 接口
|
|
5
|
+
* 适用于 Taro 小程序项目
|
|
6
|
+
*
|
|
7
|
+
* @module adapters/TaroAdapter
|
|
8
|
+
*/
|
|
9
|
+
import type { FetchFunction } from '../services/TimeSyncService';
|
|
10
|
+
import type { AdapterRequestConfig, AdapterResponse, HttpAdapter, TaroAdapterConfig, TaroRequestFunction } from './types';
|
|
11
|
+
/**
|
|
12
|
+
* Taro 适配器
|
|
13
|
+
*
|
|
14
|
+
* 将 Taro.request 封装为统一的 HttpAdapter 接口
|
|
15
|
+
*/
|
|
16
|
+
export declare class TaroAdapter implements HttpAdapter {
|
|
17
|
+
/** API 基础 URL */
|
|
18
|
+
private baseURL;
|
|
19
|
+
/** 默认请求头 */
|
|
20
|
+
private defaultHeaders;
|
|
21
|
+
/** 默认超时时间(毫秒) */
|
|
22
|
+
private timeout;
|
|
23
|
+
/** Taro.request 函数引用 */
|
|
24
|
+
private taroRequest;
|
|
25
|
+
/**
|
|
26
|
+
* 创建 Taro 适配器实例
|
|
27
|
+
*
|
|
28
|
+
* @param config - 适配器配置
|
|
29
|
+
*/
|
|
30
|
+
constructor(config: TaroAdapterConfig);
|
|
31
|
+
/**
|
|
32
|
+
* 发起 HTTP 请求
|
|
33
|
+
*
|
|
34
|
+
* @param config - 请求配置
|
|
35
|
+
* @returns Promise 响应数据
|
|
36
|
+
*/
|
|
37
|
+
request<T = any>(config: AdapterRequestConfig): Promise<AdapterResponse<T>>;
|
|
38
|
+
/**
|
|
39
|
+
* 解析完整 URL
|
|
40
|
+
*
|
|
41
|
+
* 处理相对路径和查询参数
|
|
42
|
+
*
|
|
43
|
+
* @param url - 请求 URL
|
|
44
|
+
* @param params - 查询参数
|
|
45
|
+
* @returns 完整 URL
|
|
46
|
+
*/
|
|
47
|
+
private resolveUrl;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* 创建 Taro Fetch 包装器
|
|
51
|
+
*
|
|
52
|
+
* 将 Taro.request 包装为类似 fetch 的函数
|
|
53
|
+
* 用于 TimeSyncService 进行时间同步
|
|
54
|
+
*
|
|
55
|
+
* @param taroRequest - Taro.request 函数引用
|
|
56
|
+
* @returns FetchFunction 类型的函数
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```ts
|
|
60
|
+
* import Taro from '@tarojs/taro';
|
|
61
|
+
* import { createTaroFetch } from '@be-link/http';
|
|
62
|
+
*
|
|
63
|
+
* const fetchFn = createTaroFetch(Taro.request);
|
|
64
|
+
* const timeSyncService = new TimeSyncService(config, fetchFn);
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
export declare function createTaroFetch(taroRequest: TaroRequestFunction): FetchFunction;
|
|
68
|
+
//# sourceMappingURL=TaroAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaroAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/TaroAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EACV,oBAAoB,EACpB,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAEjB;;;;GAIG;AACH,qBAAa,WAAY,YAAW,WAAW;IAC7C,iBAAiB;IACjB,OAAO,CAAC,OAAO,CAAS;IAExB,YAAY;IACZ,OAAO,CAAC,cAAc,CAAyB;IAE/C,iBAAiB;IACjB,OAAO,CAAC,OAAO,CAAS;IAExB,wBAAwB;IACxB,OAAO,CAAC,WAAW,CAAsB;IAEzC;;;;OAIG;gBACS,MAAM,EAAE,iBAAiB;IAUrC;;;;;OAKG;IACU,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAqBxF;;;;;;;;OAQG;IACH,OAAO,CAAC,UAAU;CAyBnB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,mBAAmB,GAAG,aAAa,CAa/E"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP 适配器模块
|
|
3
|
+
*
|
|
4
|
+
* 导出所有适配器和相关类型
|
|
5
|
+
*
|
|
6
|
+
* @module adapters
|
|
7
|
+
*/
|
|
8
|
+
export type { AdapterConfig, AdapterRequestConfig, AdapterResponse, HttpAdapter, TaroAdapterConfig, TaroRequestFunction, TaroRequestOption, TaroRequestResult, } from './types';
|
|
9
|
+
export { AxiosAdapter } from './AxiosAdapter';
|
|
10
|
+
export { TaroAdapter, createTaroFetch } from './TaroAdapter';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,YAAY,EACV,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP 适配器类型定义
|
|
3
|
+
*
|
|
4
|
+
* 定义统一的 HTTP 适配器接口,支持 Axios 和 Taro.request
|
|
5
|
+
*
|
|
6
|
+
* @module adapters/types
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* 适配器请求配置
|
|
10
|
+
*
|
|
11
|
+
* 统一的请求配置接口,兼容 Axios 和 Taro.request
|
|
12
|
+
*/
|
|
13
|
+
export interface AdapterRequestConfig {
|
|
14
|
+
/**
|
|
15
|
+
* 请求 URL
|
|
16
|
+
* 可以是相对路径或绝对路径
|
|
17
|
+
*/
|
|
18
|
+
url: string;
|
|
19
|
+
/**
|
|
20
|
+
* HTTP 请求方法
|
|
21
|
+
* @default 'GET'
|
|
22
|
+
*/
|
|
23
|
+
method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS';
|
|
24
|
+
/**
|
|
25
|
+
* 请求体数据
|
|
26
|
+
*/
|
|
27
|
+
data?: any;
|
|
28
|
+
/**
|
|
29
|
+
* 请求头
|
|
30
|
+
*/
|
|
31
|
+
headers?: Record<string, string>;
|
|
32
|
+
/**
|
|
33
|
+
* 请求超时时间(毫秒)
|
|
34
|
+
*/
|
|
35
|
+
timeout?: number;
|
|
36
|
+
/**
|
|
37
|
+
* URL 查询参数
|
|
38
|
+
* 会被序列化并附加到 URL 上
|
|
39
|
+
*/
|
|
40
|
+
params?: Record<string, any>;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* 适配器响应结构
|
|
44
|
+
*
|
|
45
|
+
* 统一的响应结构,兼容 Axios 和 Taro.request
|
|
46
|
+
*/
|
|
47
|
+
export interface AdapterResponse<T = any> {
|
|
48
|
+
/**
|
|
49
|
+
* 响应数据
|
|
50
|
+
*/
|
|
51
|
+
data: T;
|
|
52
|
+
/**
|
|
53
|
+
* HTTP 状态码
|
|
54
|
+
*/
|
|
55
|
+
status: number;
|
|
56
|
+
/**
|
|
57
|
+
* 响应头
|
|
58
|
+
*/
|
|
59
|
+
headers: Record<string, string>;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* HTTP 适配器接口
|
|
63
|
+
*
|
|
64
|
+
* 所有 HTTP 请求适配器必须实现此接口
|
|
65
|
+
*/
|
|
66
|
+
export interface HttpAdapter {
|
|
67
|
+
/**
|
|
68
|
+
* 发起 HTTP 请求
|
|
69
|
+
*
|
|
70
|
+
* @param config - 请求配置
|
|
71
|
+
* @returns Promise 响应数据
|
|
72
|
+
*/
|
|
73
|
+
request: <T = any>(config: AdapterRequestConfig) => Promise<AdapterResponse<T>>;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* 适配器构造配置
|
|
77
|
+
*/
|
|
78
|
+
export interface AdapterConfig {
|
|
79
|
+
/**
|
|
80
|
+
* API 基础 URL
|
|
81
|
+
*/
|
|
82
|
+
baseURL: string;
|
|
83
|
+
/**
|
|
84
|
+
* 请求超时时间(毫秒)
|
|
85
|
+
* @default 30000
|
|
86
|
+
*/
|
|
87
|
+
timeout?: number;
|
|
88
|
+
/**
|
|
89
|
+
* 默认请求头
|
|
90
|
+
*/
|
|
91
|
+
headers?: Record<string, string>;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Taro 适配器构造配置
|
|
95
|
+
*/
|
|
96
|
+
export interface TaroAdapterConfig extends AdapterConfig {
|
|
97
|
+
/**
|
|
98
|
+
* Taro.request 函数引用
|
|
99
|
+
* 需要从 @tarojs/taro 导入并传入
|
|
100
|
+
*/
|
|
101
|
+
taroRequest: TaroRequestFunction;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Taro.request 函数类型
|
|
105
|
+
*
|
|
106
|
+
* 简化的 Taro.request 类型定义,避免直接依赖 @tarojs/taro
|
|
107
|
+
*/
|
|
108
|
+
export interface TaroRequestFunction {
|
|
109
|
+
<T = any>(option: TaroRequestOption<T>): Promise<TaroRequestResult<T>>;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Taro.request 请求选项
|
|
113
|
+
*/
|
|
114
|
+
export interface TaroRequestOption<T = any> {
|
|
115
|
+
url: string;
|
|
116
|
+
method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'OPTIONS' | 'HEAD' | 'TRACE' | 'CONNECT';
|
|
117
|
+
data?: any;
|
|
118
|
+
header?: Record<string, string>;
|
|
119
|
+
timeout?: number;
|
|
120
|
+
dataType?: string;
|
|
121
|
+
responseType?: 'text' | 'arraybuffer';
|
|
122
|
+
success?: (result: TaroRequestResult<T>) => void;
|
|
123
|
+
fail?: (res: any) => void;
|
|
124
|
+
complete?: (res: any) => void;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Taro.request 响应结果
|
|
128
|
+
*/
|
|
129
|
+
export interface TaroRequestResult<T = any> {
|
|
130
|
+
data: T;
|
|
131
|
+
statusCode: number;
|
|
132
|
+
header: Record<string, string>;
|
|
133
|
+
cookies?: string[];
|
|
134
|
+
errMsg?: string;
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;;OAGG;IACH,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IAE1E;;OAEG;IACH,IAAI,CAAC,EAAE,GAAG,CAAC;IAEX;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,GAAG;IACtC;;OAEG;IACH,IAAI,EAAE,CAAC,CAAC;IAER;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;OAKG;IACH,OAAO,EAAE,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,oBAAoB,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;CACjF;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD;;;OAGG;IACH,WAAW,EAAE,mBAAmB,CAAC;CAClC;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;CACxE;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC,GAAG,GAAG;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IACtF,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;IACtC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IACjD,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IAC1B,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC,GAAG,GAAG;IACxC,IAAI,EAAE,CAAC,CAAC;IACR,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|