yfw-request
v0.0.3
Published
药房网商城请求库
Readme
YFWRequest
药房网商城的自定义请求库,支持过滤竞争请求,取消请求,插件式扩展
安装
pnpm i axios yfw-request基础使用
import YFWRequest from 'yfw-request'
const request = YFWRequest({
baseURL: 'https://jsonplaceholder.typicode.com'
})
request.get('/todos/1').then(res => {
console.log(res)
})内置插件
debouncePlugin
启动开关debounceWait,默认值为0,即不启动
throttlePlugin
启动开关throttleWait,默认值为0,即不启动
retryPlugin
自定义插件
可以定义函数,在调用YFWRequest时传入第二个参数
数据类型
options
// CreateAxiosDefaults为axios内置类型
export interface YFWRequestOptions extends CreateAxiosDefaults {
onBefore?: (params: AxiosRequestConfig) => void;
onSuccess?: (data: unknown, params: AxiosRequestConfig) => void;
onError?: (e: Error, params: AxiosRequestConfig) => void;
onFinally?: (params: AxiosRequestConfig, data?: unknown, e?: Error) => void;
// debounce
debounceWait?: number;
debounceLeading?: boolean;
debounceTrailing?: boolean;
debounceMaxWait?: number;
// throttle
throttleWait?: number;
throttleLeading?: boolean;
throttleTrailing?: boolean;
// retry
retryCount?: number;
retryInterval?: number;
}plugin
// 插件生命周期钩子
export interface ReturnPlugin {
onBefore?: (params: AxiosRequestConfig) =>
| ({
stopNow?: boolean;
returnNow?: boolean;
} & Partial<RequestState>)
| void;
onSuccess?: (data: unknown, params: AxiosRequestConfig) => void;
onError?: (e: Error, params: AxiosRequestConfig) => void;
onFinally?: (params: AxiosRequestConfig, data?: unknown, e?: Error) => void;
onCancel?: () => void;
onMutate?: (data: unknown) => void;
}
export interface IPlugin {
init?: (options: YFWRequestOptions) => Partial<RequestState>;
(
instance: AxiosRequest,
options: YFWRequestOptions
): ReturnPlugin;
}
function YFWRequest(options: YFWRequestOptions, plugins?: IPlugin[]): AxiosRequest;