597 lines
13 KiB
TypeScript
597 lines
13 KiB
TypeScript
/**
|
||
* 任意值对象
|
||
*/
|
||
export declare interface AnyObject<T extends any = any> {
|
||
[x: string]: T;
|
||
}
|
||
/**
|
||
* 请求方法
|
||
*/
|
||
export declare type AdapterMethod = 'OPTIONS' | 'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'TRACE' | 'CONNECT';
|
||
/**
|
||
* 请求方法别名
|
||
*/
|
||
export declare type AliasMethod = 'options' | 'get' | 'head' | 'post' | 'put' | 'delete' | 'trace' | 'connect';
|
||
/**
|
||
* Axios 请求方法
|
||
*/
|
||
export declare type Method = AliasMethod | AdapterMethod;
|
||
/**
|
||
* Axios 参数
|
||
*/
|
||
export declare type Params = AnyObject;
|
||
/**
|
||
* Axios 数据
|
||
*/
|
||
export declare type Data = string | AnyObject | ArrayBuffer;
|
||
/**
|
||
* Axios 头
|
||
*/
|
||
export declare interface Headers extends Partial<Record<'common' | AliasMethod, AnyObject<string>>> {
|
||
/**
|
||
* 自定义配置
|
||
*/
|
||
[x: string]: AnyObject<string> | string | undefined;
|
||
}
|
||
/**
|
||
* 通用请求配置
|
||
*/
|
||
export declare interface RequestConfig {
|
||
/**
|
||
* 接口地址
|
||
*/
|
||
url: string;
|
||
/**
|
||
* HTTP 请求方法
|
||
*/
|
||
method: AdapterMethod;
|
||
/**
|
||
* 请求数据
|
||
*/
|
||
data: Data;
|
||
/**
|
||
* 请求头 同 headers
|
||
*/
|
||
header: AnyObject;
|
||
/**
|
||
* 请求头 同 header
|
||
*/
|
||
headers: AnyObject;
|
||
/**
|
||
* 返回的数据格式
|
||
*/
|
||
dataType?: 'json' | '其他';
|
||
/**
|
||
* 响应的数据类型
|
||
*/
|
||
responseType?: 'text' | 'arraybuffer';
|
||
/**
|
||
* 超时时间
|
||
*/
|
||
timeout?: number;
|
||
/**
|
||
* 开启 http2
|
||
*/
|
||
enableHttp2?: boolean;
|
||
/**
|
||
* 开启 quic
|
||
*/
|
||
enableQuic?: boolean;
|
||
/**
|
||
* 开启 cache
|
||
*/
|
||
enableCache?: boolean;
|
||
/**
|
||
* 验证 ssl 证书
|
||
*/
|
||
sslVerify?: boolean;
|
||
}
|
||
/**
|
||
* 通用响应体
|
||
*/
|
||
export declare interface Response {
|
||
/**
|
||
* 响应状态码
|
||
*/
|
||
statusCode?: number;
|
||
/**
|
||
* 响应状态码
|
||
*/
|
||
status?: number;
|
||
/**
|
||
* 响应头 Headers
|
||
*/
|
||
header?: AnyObject;
|
||
/**
|
||
* 响应头 Headers
|
||
*/
|
||
headers?: Headers;
|
||
/**
|
||
* 响应数据
|
||
*/
|
||
data: Data;
|
||
/**
|
||
* 开发者服务器返回的 cookies,格式为字符串数组
|
||
*/
|
||
cookies?: string[];
|
||
/**
|
||
* 网络请求过程中一些关键时间点的耗时信息
|
||
*/
|
||
profile?: AnyObject;
|
||
}
|
||
/**
|
||
* 适配器请求配置
|
||
*/
|
||
export declare interface AdapterRequestConfig extends RequestConfig {
|
||
/**
|
||
* 成功的响应函数
|
||
*/
|
||
success: (res: Response) => void;
|
||
/**
|
||
* 失败的响应函数
|
||
*/
|
||
fail: (err: unknown) => void;
|
||
}
|
||
/**
|
||
* 适配器请求任务
|
||
*/
|
||
export declare interface AdapterRequestTask {
|
||
/**
|
||
* 取消请求
|
||
*/
|
||
abort(): void;
|
||
}
|
||
/**
|
||
* 适配器
|
||
*/
|
||
export declare interface Adapter {
|
||
(config: AdapterRequestConfig): AdapterRequestTask | void;
|
||
}
|
||
/**
|
||
* 平台
|
||
*/
|
||
export declare interface Platform {
|
||
request: Adapter;
|
||
}
|
||
/**
|
||
* 转换数据函数
|
||
*/
|
||
export declare interface TransformData {
|
||
(data: Data, headers: Headers): Data;
|
||
}
|
||
/**
|
||
* 错误处理程序
|
||
*/
|
||
export declare interface ErrorHandler {
|
||
(error: any): Promise<any> | any;
|
||
}
|
||
/**
|
||
* Axios 请求配置
|
||
*/
|
||
export declare interface AxiosRequestConfig {
|
||
/**
|
||
* 自定义适配器
|
||
*/
|
||
adapter?: Adapter;
|
||
/**
|
||
* 基础地址
|
||
*/
|
||
baseURL?: string;
|
||
/**
|
||
* 请求地址
|
||
*/
|
||
url?: string;
|
||
/**
|
||
* 请求方法
|
||
*/
|
||
method?: Method;
|
||
/**
|
||
* 请求参数
|
||
*/
|
||
params?: Params;
|
||
/**
|
||
* 请求数据
|
||
*/
|
||
data?: Data;
|
||
/**
|
||
* 请求头
|
||
*/
|
||
headers?: Headers;
|
||
/**
|
||
* 自定义合法状态码
|
||
*/
|
||
validateStatus?: (status: number) => boolean;
|
||
/**
|
||
* 自定义参数序列化
|
||
*/
|
||
paramsSerializer?: (params?: AnyObject) => string;
|
||
/**
|
||
* 转换请求数据
|
||
*/
|
||
transformRequest?: TransformData | TransformData[];
|
||
/**
|
||
* 转换响应数据
|
||
*/
|
||
transformResponse?: TransformData | TransformData[];
|
||
/**
|
||
* 自定义错误处理
|
||
*/
|
||
errorHandler?: ErrorHandler;
|
||
/**
|
||
* 取消令牌
|
||
*/
|
||
cancelToken?: CancelToken;
|
||
/**
|
||
* 超时时间
|
||
*/
|
||
timeout?: number;
|
||
/**
|
||
* 响应数据格式
|
||
*/
|
||
dataType?: 'json' | '其他';
|
||
/**
|
||
* 响应数据类型
|
||
*/
|
||
responseType?: 'text' | 'arraybuffer';
|
||
/**
|
||
* 开启 http2
|
||
*/
|
||
enableHttp2?: boolean;
|
||
/**
|
||
* 开启 quic
|
||
*/
|
||
enableQuic?: boolean;
|
||
/**
|
||
* 开启 cache
|
||
*/
|
||
enableCache?: boolean;
|
||
/**
|
||
* 验证 ssl 证书
|
||
*/
|
||
sslVerify?: boolean;
|
||
}
|
||
/**
|
||
* Axios 响应体
|
||
*/
|
||
export declare interface AxiosResponse<T extends Data = Data> {
|
||
/**
|
||
* 状态码
|
||
*/
|
||
status: number;
|
||
/**
|
||
* 状态文本
|
||
*/
|
||
statusText: string;
|
||
/**
|
||
* 服务端返回的数据
|
||
*/
|
||
data: T;
|
||
/**
|
||
* 响应头
|
||
*/
|
||
headers: Headers;
|
||
/**
|
||
* Axios 请求配置
|
||
*/
|
||
config: AxiosRequestConfig;
|
||
/**
|
||
* 开发者服务器返回的 cookies,格式为字符串数组
|
||
*/
|
||
cookies?: string[];
|
||
/**
|
||
* 网络请求过程中一些关键时间点的耗时信息
|
||
*/
|
||
profile?: AnyObject;
|
||
}
|
||
/**
|
||
* 拦截器成功的回调函数
|
||
*/
|
||
export declare interface InterceptorResolved<T = any> {
|
||
(value: T): Promise<T> | T;
|
||
}
|
||
/**
|
||
* 拦截器失败的回调函数
|
||
*/
|
||
export declare interface InterceptorRejected {
|
||
(error: any): any;
|
||
}
|
||
/**
|
||
* 拦截器
|
||
*/
|
||
export declare interface Interceptor<T = any> {
|
||
/**
|
||
* 拦截器成功的回调函数
|
||
*/
|
||
resolved: InterceptorResolved<T>;
|
||
/**
|
||
* 拦截器失败的回调函数
|
||
*/
|
||
rejected?: InterceptorRejected;
|
||
}
|
||
/**
|
||
* 拦截器执行器
|
||
*/
|
||
export declare interface InterceptorExecutor<T = any> {
|
||
(interceptor: Interceptor<T>): void;
|
||
}
|
||
/**
|
||
* 拦截器管理器
|
||
*/
|
||
export declare interface InterceptorManager<T = any> {
|
||
[x: string]: any;
|
||
/**
|
||
* 添加拦截器
|
||
*
|
||
* @param resolved 成功的回调函数
|
||
* @param rejected 失败的回调函数
|
||
*/
|
||
use(resolved: InterceptorResolved<T>, rejected?: InterceptorRejected): number;
|
||
/**
|
||
* 删除拦截器
|
||
*
|
||
* @param id 拦截器 id
|
||
*/
|
||
eject(id: number): void;
|
||
/**
|
||
* 遍历所有拦截器
|
||
*
|
||
* @param executor 拦截器执行器
|
||
* @param reverse 是否倒序遍历
|
||
*/
|
||
forEach(executor: InterceptorExecutor<T>, reverse?: 'reverse'): void;
|
||
}
|
||
/**
|
||
* Axios 拦截器
|
||
*/
|
||
export declare interface Interceptors {
|
||
/**
|
||
* request 请求拦截器
|
||
*/
|
||
request: InterceptorManager<AxiosRequestConfig>;
|
||
/**
|
||
* response 响应拦截器
|
||
*/
|
||
response: InterceptorManager<AxiosResponse>;
|
||
}
|
||
/**
|
||
* Axios 实例
|
||
*/
|
||
export declare interface Axios {
|
||
/**
|
||
* 默认配置
|
||
*/
|
||
defaults: AxiosRequestConfig;
|
||
/**
|
||
* Axios 拦截器
|
||
*/
|
||
interceptors: Interceptors;
|
||
/**
|
||
* 根据配置中的 url 和 params 生成一个 URI
|
||
*
|
||
* @param config 请求配置
|
||
*/
|
||
getUri(config: AxiosRequestConfig): string;
|
||
/**
|
||
* 发送 HTTP 请求
|
||
*
|
||
* @param config 请求配置
|
||
*/
|
||
request<T extends Data>(config: AxiosRequestConfig): Promise<AxiosResponse<T>>;
|
||
/**
|
||
* 发送 HTTP 请求 OPTIONS
|
||
*
|
||
* @param url 请求地址
|
||
* @param config 额外配置
|
||
*/
|
||
options<T extends Data>(url: string, config?: AxiosRequestConfig): Promise<AxiosResponse<T>>;
|
||
/**
|
||
* 发送 HTTP 请求 GET
|
||
*
|
||
* @param url 请求地址
|
||
* @param params 请求参数
|
||
* @param config 额外配置
|
||
*/
|
||
get<T extends Data>(url: string, params?: Params, config?: AxiosRequestConfig): Promise<AxiosResponse<T>>;
|
||
/**
|
||
* 发送 HTTP 请求 HEAD
|
||
*
|
||
* @param url 请求地址
|
||
* @param params 请求参数
|
||
* @param config 额外配置
|
||
*/
|
||
head<T extends Data>(url: string, params?: Params, config?: AxiosRequestConfig): Promise<AxiosResponse<T>>;
|
||
/**
|
||
* 发送 HTTP 请求 POST
|
||
*
|
||
* @param url 请求地址
|
||
* @param data 请求数据
|
||
* @param config 额外配置
|
||
*/
|
||
post<T extends Data>(url: string, data?: Data, config?: AxiosRequestConfig): Promise<AxiosResponse<T>>;
|
||
/**
|
||
* 发送 HTTP 请求 PUT
|
||
*
|
||
* @param url 请求地址
|
||
* @param data 请求数据
|
||
* @param config 额外配置
|
||
*/
|
||
put<T extends Data>(url: string, data?: Data, config?: AxiosRequestConfig): Promise<AxiosResponse<T>>;
|
||
/**
|
||
* 发送 HTTP 请求 DELETE
|
||
*
|
||
* @param url 请求地址
|
||
* @param params 请求参数
|
||
* @param config 额外配置
|
||
*/
|
||
delete<T extends Data>(url: string, params?: Params, config?: AxiosRequestConfig): Promise<AxiosResponse<T>>;
|
||
/**
|
||
* 发送 HTTP 请求 TRACE
|
||
*
|
||
* @param url 请求地址
|
||
* @param config 额外配置
|
||
*/
|
||
trace<T extends Data>(url: string, config?: AxiosRequestConfig): Promise<AxiosResponse<T>>;
|
||
/**
|
||
* 发送 HTTP 请求 CONNECT
|
||
*
|
||
* @param url 请求地址
|
||
* @param config 额外配置
|
||
*/
|
||
connect<T extends Data>(url: string, config?: AxiosRequestConfig): Promise<AxiosResponse<T>>;
|
||
}
|
||
/**
|
||
* Axios 类接口
|
||
*/
|
||
export declare interface AxiosConstructor {
|
||
new (config?: AxiosRequestConfig): Axios;
|
||
}
|
||
/**
|
||
* AxiosError 类继承自 Error
|
||
*/
|
||
export declare interface AxiosError extends Error {
|
||
/**
|
||
* 是 Axios 错误
|
||
*/
|
||
isAxiosError: boolean;
|
||
/**
|
||
* 请求配置
|
||
*/
|
||
config: AxiosRequestConfig;
|
||
/**
|
||
* 通用请求配置
|
||
*/
|
||
request: RequestConfig;
|
||
/**
|
||
* Axios 响应体
|
||
*/
|
||
response?: AxiosResponse;
|
||
}
|
||
/**
|
||
* 取消请求
|
||
*/
|
||
export declare interface Cancel {
|
||
/**
|
||
* 取消信息
|
||
*/
|
||
message?: string;
|
||
/**
|
||
* 序列化
|
||
*/
|
||
toString(): string;
|
||
}
|
||
/**
|
||
* 取消请求类接口
|
||
*/
|
||
export declare interface CancelConstructor {
|
||
new (message?: string): Cancel;
|
||
}
|
||
/**
|
||
* 取消操作
|
||
*/
|
||
export declare interface CancelAction {
|
||
(message?: string): void;
|
||
}
|
||
/**
|
||
* 取消操作执行器
|
||
*/
|
||
export declare interface CancelExecutor {
|
||
(cancel: CancelAction): void;
|
||
}
|
||
/**
|
||
* 取消令牌
|
||
*/
|
||
export declare interface CancelToken {
|
||
/**
|
||
* 取消时被触发
|
||
*/
|
||
listener: Promise<Cancel>;
|
||
/**
|
||
* 如果已经取消, 则抛出取消对象
|
||
*/
|
||
throwIfRequested(): void;
|
||
}
|
||
/**
|
||
* 取消令牌 source
|
||
*/
|
||
export declare interface CancelTokenSource {
|
||
/**
|
||
* 取消令牌
|
||
*/
|
||
token: CancelToken;
|
||
/**
|
||
* 取消操作
|
||
*/
|
||
cancel: CancelAction;
|
||
}
|
||
/**
|
||
* 取消令牌类接口
|
||
*/
|
||
export declare interface CancelTokenConstructor {
|
||
new (executor: CancelExecutor): CancelToken;
|
||
/**
|
||
* 返回一个 CancelTokenSource
|
||
*
|
||
* CancelTokenSource.token 是一个 CancelToken 对象
|
||
*
|
||
* CancelTokenSource.cancel 是一个 CancelAction 函数
|
||
*
|
||
* 调用 CancelTokenSource.cancel('这里可以填写您的错误信息')
|
||
*
|
||
* 取消请求 CancelTokenSource.token
|
||
*/
|
||
source(): CancelTokenSource;
|
||
}
|
||
/**
|
||
* Axios 实例基础拓展
|
||
*
|
||
* * 支持两种函数调用方式
|
||
*/
|
||
export declare interface AxiosBaseInstance extends Axios {
|
||
/**
|
||
* 发送 HTTP 请求
|
||
*
|
||
* 调用方式一
|
||
*
|
||
* @param config 请求配置
|
||
*/
|
||
<T extends Data>(config: AxiosRequestConfig): Promise<AxiosResponse<T>>;
|
||
/**
|
||
* 发送 HTTP 请求
|
||
*
|
||
* 调用方式二
|
||
*
|
||
* @param url 请求地址
|
||
* @param config 额外配置
|
||
*/
|
||
<T extends Data>(url: string, config?: AxiosRequestConfig): Promise<AxiosResponse<T>>;
|
||
}
|
||
/**
|
||
* Axios 实例拓展
|
||
*
|
||
* * 支持两种函数调用方式
|
||
*
|
||
* * 同时拓展了一些静态属性和方法
|
||
*/
|
||
export declare interface AxiosInstance extends AxiosBaseInstance {
|
||
/**
|
||
* 创建 Axios 实例基础拓展
|
||
*
|
||
* @param defaults 自定义默认配置
|
||
*/
|
||
create(defaults?: AxiosRequestConfig): AxiosBaseInstance;
|
||
/**
|
||
* Axios 类
|
||
*/
|
||
Axios: AxiosConstructor;
|
||
/**
|
||
* 取消令牌 类
|
||
*/
|
||
CancelToken: CancelTokenConstructor;
|
||
/**
|
||
* 检查错误是否来自取消请求
|
||
*
|
||
* @param value 判断的值
|
||
*/
|
||
isCancel: (value: any) => boolean;
|
||
}
|