UNPKG

@hopeio/utils

Version:
51 lines (50 loc) 2.42 kB
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 {};