@@ -11,8 +11,14 @@ import {
1111 AxiosRequestHeaders ,
1212} from './core/Axios' ;
1313
14+ /**
15+ * 适配器请求类型
16+ */
1417export type AxiosAdapterRequestType = 'request' | 'download' | 'upload' ;
1518
19+ /**
20+ * 适配器请求方法
21+ */
1622export type AxiosAdapterRequestMethod =
1723 | 'OPTIONS'
1824 | 'GET'
@@ -24,8 +30,19 @@ export type AxiosAdapterRequestMethod =
2430 | 'TRACE'
2531 | 'CONNECT' ;
2632
33+ /**
34+ * 适配器请求数据
35+ */
36+ export type AxiosAdapterRequestData = string | AnyObject | ArrayBuffer ;
37+
38+ /**
39+ * 适配器响应数据
40+ */
2741export type AxiosAdapterResponseData = string | ArrayBuffer | AnyObject ;
2842
43+ /**
44+ * 适配器响应体
45+ */
2946export interface AxiosAdapterResponse extends AnyObject {
3047 /**
3148 * 状态码
@@ -45,6 +62,9 @@ export interface AxiosAdapterResponse extends AnyObject {
4562 data : AxiosAdapterResponseData ;
4663}
4764
65+ /**
66+ * 适配器错误体
67+ */
4868export interface AxiosAdapterResponseError extends AnyObject {
4969 /**
5070 * 状态码
@@ -64,6 +84,9 @@ export interface AxiosAdapterResponseError extends AnyObject {
6484 data ?: AnyObject ;
6585}
6686
87+ /**
88+ * 适配器请求配置
89+ */
6790export interface AxiosAdapterRequestConfig extends AnyObject {
6891 /**
6992 * 请求类型
@@ -84,7 +107,7 @@ export interface AxiosAdapterRequestConfig extends AnyObject {
84107 /**
85108 * 请求数据
86109 */
87- data ?: AnyObject ;
110+ data ?: AxiosAdapterRequestData ;
88111 /**
89112 * 请求头
90113 */
@@ -111,37 +134,61 @@ export interface AxiosAdapterRequestConfig extends AnyObject {
111134 fail ( error : AxiosAdapterResponseError ) : void ;
112135}
113136
137+ /**
138+ * 请求函数基本选项
139+ */
114140export interface AxiosAdapterBaseOptions extends AxiosAdapterRequestConfig {
115141 header ?: AxiosRequestHeaders ;
116142 success ( response : AxiosAdapterResponse ) : void ;
117143 fail ( error : AxiosAdapterResponseError ) : void ;
118144}
119145
146+ /**
147+ * 请求函数选项
148+ */
120149export type AxiosAdapterRequestOptions = AxiosAdapterBaseOptions ;
121150
151+ /**
152+ * 下载函数选项
153+ */
154+ export interface AxiosAdapterDownloadOptions extends AxiosAdapterBaseOptions {
155+ filePath ?: string ;
156+ }
157+
158+ /**
159+ * 上传函数选项
160+ */
122161export interface AxiosAdapterUploadOptions
123162 extends AxiosAdapterBaseOptions ,
124163 AxiosRequestFormData {
125164 fileName : string ;
126165 formData ?: AnyObject ;
127166}
128167
129- export interface AxiosAdapterDownloadOptions extends AxiosAdapterBaseOptions {
130- filePath ?: string ;
131- }
132-
168+ /**
169+ * 请求函数
170+ */
133171export interface AxiosAdapterRequest {
134- ( config : AxiosAdapterRequestOptions ) : AxiosAdapterTask ;
172+ ( config : AxiosAdapterRequestOptions ) : AxiosAdapterPlatformTask ;
135173}
136174
137- export interface AxiosAdapterUpload {
138- ( config : AxiosAdapterUploadOptions ) : AxiosAdapterTask ;
175+ /**
176+ * 下载函数
177+ */
178+ export interface AxiosAdapterDownload {
179+ ( config : AxiosAdapterDownloadOptions ) : AxiosAdapterPlatformTask ;
139180}
140181
141- export interface AxiosAdapterDownload {
142- ( config : AxiosAdapterDownloadOptions ) : AxiosAdapterTask ;
182+ /**
183+ * 上传函数
184+ */
185+ export interface AxiosAdapterUpload {
186+ ( config : AxiosAdapterUploadOptions ) : AxiosAdapterPlatformTask ;
143187}
144188
189+ /**
190+ * 适配器平台
191+ */
145192export interface AxiosAdapterPlatform {
146193 /**
147194 * 发送请求
@@ -157,7 +204,10 @@ export interface AxiosAdapterPlatform {
157204 upload : AxiosAdapterUpload ;
158205}
159206
160- export type AxiosAdapterTask =
207+ /**
208+ * 适配器平台请求任务
209+ */
210+ export type AxiosAdapterPlatformTask =
161211 | undefined
162212 | void
163213 | {
@@ -166,10 +216,16 @@ export type AxiosAdapterTask =
166216 offProgressUpdate ?( callback : AxiosProgressCallback ) : void ;
167217 } ;
168218
219+ /**
220+ * 适配器函数
221+ */
169222export interface AxiosAdapter {
170- ( config : AxiosAdapterRequestConfig ) : AxiosAdapterTask ;
223+ ( config : AxiosAdapterRequestConfig ) : AxiosAdapterPlatformTask ;
171224}
172225
226+ /**
227+ * 获取支持的平台适配器
228+ */
173229export function getDefaultAdapter ( ) {
174230 const platform = revisePlatformApiNames ( getPlatform ( ) ) ;
175231
@@ -220,13 +276,20 @@ export function getDefaultAdapter() {
220276 return createAdapter ( platform ) ;
221277}
222278
279+ /**
280+ * 创建适配器
281+ *
282+ * @param platform 平台 API 对象
283+ */
223284export function createAdapter ( platform : AxiosAdapterPlatform ) {
224285 assert ( isPlainObject ( platform ) , 'platform 不是一个 object' ) ;
225286 assert ( isFunction ( platform . request ) , 'request 不是一个 function' ) ;
226287 assert ( isFunction ( platform . upload ) , 'upload 不是一个 function' ) ;
227288 assert ( isFunction ( platform . download ) , 'download 不是一个 function' ) ;
228289
229- function adapter ( config : AxiosAdapterRequestConfig ) : AxiosAdapterTask {
290+ function adapter (
291+ config : AxiosAdapterRequestConfig ,
292+ ) : AxiosAdapterPlatformTask {
230293 const baseOptions = transformOptions ( config ) ;
231294
232295 switch ( config . type ) {
@@ -242,14 +305,14 @@ export function createAdapter(platform: AxiosAdapterPlatform) {
242305 function processRequest (
243306 request : AxiosAdapterRequest ,
244307 baseOptions : AxiosAdapterBaseOptions ,
245- ) : AxiosAdapterTask {
308+ ) : AxiosAdapterPlatformTask {
246309 return request ( baseOptions ) ;
247310 }
248311
249312 function processUpload (
250313 upload : AxiosAdapterUpload ,
251314 baseOptions : AxiosAdapterBaseOptions ,
252- ) : AxiosAdapterTask {
315+ ) : AxiosAdapterPlatformTask {
253316 const { name, filePath, fileType, ...formData } =
254317 baseOptions . data as AxiosRequestFormData ;
255318 const options = {
@@ -273,7 +336,7 @@ export function createAdapter(platform: AxiosAdapterPlatform) {
273336 function processDownload (
274337 download : AxiosAdapterDownload ,
275338 baseOptions : AxiosAdapterBaseOptions ,
276- ) : AxiosAdapterTask {
339+ ) : AxiosAdapterPlatformTask {
277340 const options : AxiosAdapterDownloadOptions = {
278341 ...baseOptions ,
279342 filePath : baseOptions . params ?. filePath ,
0 commit comments