@hopeio/utils
Version:
javascript utils
51 lines (50 loc) • 2.42 kB
TypeScript
import { AxiosInstance, AxiosError, AxiosResponse, Method, HeadersDefaults, AxiosHeaderValue, AxiosInterceptorOptions, InternalAxiosRequestConfig, AxiosRequestConfig, AxiosRequestHeaders } from 'axios';
export type HttpRequestMethods = Extract<Method, "get" | "post" | "put" | "delete" | "patch" | "option" | "head">;
export interface HttpError extends AxiosError {
isCancelRequest?: boolean;
}
export interface HttpResponse extends AxiosResponse {
config: InternalHttpRequestConfig;
}
export interface InternalHttpRequestConfig extends HttpRequestConfig {
headers: AxiosRequestHeaders;
}
export interface HttpRequestConfig extends AxiosRequestConfig {
successMsg?: string;
beforeRequestCallback?: (request: HttpRequestConfig) => void;
beforeResponseCallback?: (response: HttpResponse) => void;
}
export interface HttpDefaults extends Omit<HttpRequestConfig, 'headers'> {
headers: HeadersDefaults;
}
type HttpRequestInterceptorUse<T> = (onFulfilled?: ((value: T) => T | Promise<T>) | null, onRejected?: ((error: any) => any) | null, options?: AxiosInterceptorOptions) => number;
type HttpResponseInterceptorUse<T> = (onFulfilled?: ((value: T) => T | Promise<T>) | null, onRejected?: ((error: any) => any) | null) => number;
export interface HttpInterceptorManager<V> {
use: V extends HttpResponse ? HttpResponseInterceptorUse<V> : HttpRequestInterceptorUse<V>;
eject(id: number): void;
clear(): void;
}
export declare class Http {
constructor(config?: HttpRequestConfig);
/** 保存当前`Axios`实例对象 */
defaults: Omit<HttpDefaults, "headers"> & {
headers: HeadersDefaults & {
[p: string]: AxiosHeaderValue;
};
};
instance: AxiosInstance;
interceptors: {
request: HttpInterceptorManager<InternalAxiosRequestConfig>;
response: HttpInterceptorManager<HttpResponse>;
};
/** 通用请求工具函数 */
request<T>(method: HttpRequestMethods, url: string, param?: HttpRequestConfig): Promise<T>;
/** 单独抽离的`post`工具函数 */
post<T>(url: string, params?: HttpRequestConfig): Promise<T>;
/** 单独抽离的`get`工具函数 */
get<T>(url: string, params?: HttpRequestConfig): Promise<T>;
put<T>(url: string, params?: HttpRequestConfig): Promise<T>;
delete<T>(url: string, params?: HttpRequestConfig): Promise<T>;
}
export declare const http: Http;
export {};