@pisell/pisellos
Version:
一个可扩展的前端模块化SDK框架,支持插件系统
129 lines (128 loc) • 3.48 kB
TypeScript
import { Plugin } from '../types';
/**
* RequestPlugin 接口定义
*/
export interface RequestPlugin extends Plugin {
/**
* 发起 GET 请求
* @param url 请求地址
* @param options 请求选项
*/
get: <T = any>(url: string, data?: any, options?: RequestOptions) => Promise<T>;
/**
* 发起 POST 请求
* @param url 请求地址
* @param data 请求数据
* @param options 请求选项
*/
post: <T = any>(url: string, data?: any, options?: RequestOptions) => Promise<T>;
/**
* 发起 PUT 请求
* @param url 请求地址
* @param data 请求数据
* @param options 请求选项
*/
put: <T = any>(url: string, data?: any, options?: RequestOptions) => Promise<T>;
/**
* 发起 DELETE 请求
* @param url 请求地址
* @param options 请求选项
*/
delete: <T = any>(url: string, options?: RequestOptions) => Promise<T>;
/**
* 通用请求方法
* @param options 完整的请求选项
*/
request: <T = any>(options: RequestOptions) => Promise<T>;
}
/**
* 请求配置
*/
export interface RequestOptions {
url?: string;
method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS';
headers?: Record<string, string>;
data?: any;
body?: any;
params?: Record<string, string | number | boolean>;
timeout?: number;
responseType?: 'json' | 'text' | 'arraybuffer' | 'blob';
withCredentials?: boolean;
useCache?: boolean;
}
/**
* 响应接口
*/
export interface Response<T = any> {
data: T;
status: number;
statusText: string;
headers: Record<string, string>;
config: RequestOptions;
}
/**
* 请求错误
*/
export declare class RequestError extends Error {
response?: Response;
request?: any;
config?: RequestOptions;
constructor(message: string, config?: RequestOptions, request?: any, response?: Response);
}
/**
* RequestPlugin 实现
*/
declare class RequestPluginImpl implements RequestPlugin {
name: string;
version: string;
private core;
/**
* 默认请求选项
*/
private defaultOptions;
/**
* 全局拦截器
*/
private interceptors;
initialize(): void;
destroy(): void;
/**
* 添加请求拦截器
*/
addRequestInterceptor(interceptor: (config: RequestOptions) => RequestOptions | Promise<RequestOptions>): void;
/**
* 添加响应拦截器
*/
addResponseInterceptor(interceptor: (response: Response) => Response | Promise<Response>): void;
/**
* 添加错误拦截器
*/
addErrorInterceptor(interceptor: (error: RequestError) => RequestError | Promise<RequestError>): void;
/**
* GET 请求
*/
get<T = any>(url: string, options?: RequestOptions): Promise<T>;
/**
* POST 请求
*/
post<T = any>(url: string, data?: any, options?: RequestOptions): Promise<T>;
/**
* PUT 请求
*/
put<T = any>(url: string, data?: any, options?: RequestOptions): Promise<T>;
/**
* DELETE 请求
*/
delete<T = any>(url: string, options?: RequestOptions): Promise<T>;
/**
* 通用请求方法
*/
request<T = any>(options: RequestOptions): Promise<T>;
/**
* 执行实际的请求
* 这里实现了一个基于 fetch API 的请求
*/
private performRequest;
}
declare const _default: RequestPluginImpl;
export default _default;