import { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios'; import { ReactNode } from 'react'; export declare type tipType = string | boolean | ReactNode | { mode: 'notification' | 'modal' | 'message'; content?: ReactNode; description?: ReactNode; duration?: number; [x: string]: any; }; export interface methodOptions extends AxiosRequestConfig { noEmpty?: boolean; undefinedToNull?: boolean; trim?: boolean; fixU202D?: boolean; spaceUnicodeToASCII?: boolean; fillUrl?: boolean; originResponse?: boolean; successTip?: tipType; errorTip?: tipType; cancelRef?: (c: any) => any; setLoading?: any; setDeleting?: any; setSaving?: any; setUpdating?: any; setFetching?: any; setUploading?: any; setDownloading?: any; setExporting?: any; fileName?: string; beforeDownload?: (res: AxiosResponse) => boolean; } export interface successOptions { data?: any; tip?: tipType; from?: string; options?: methodOptions; response?: AxiosResponse; } export interface errorOptions { error?: any; tip?: tipType; from?: string; options?: methodOptions; } export interface AjaxOptions extends AxiosRequestConfig { onSuccess?: (options: successOptions) => undefined; onError?: (options: successOptions) => undefined; noEmpty?: boolean; undefinedToNull?: boolean; trim?: boolean; fillUrl?: boolean; fixU202D?: boolean; spaceUnicodeToASCII?: boolean; } export default class Ajax { readonly instance: AxiosInstance; private readonly onSuccess; private readonly onError; private readonly noEmpty; private readonly undefinedToNull; private readonly trim; private readonly fillUrl; private readonly fixU202D; private readonly spaceUnicodeToASCII; constructor(options?: AjaxOptions); /** * ajax方法 * @param options * @returns {Promise} */ ajax(options?: methodOptions): Promise; /** * 发送一个get请求,一般用于查询操作 * @param {string} url 请求路径 * @param {object} [params] 传输给后端的数据,正常请求会转换成query string 拼接到url后面 * @param {object} [options] axios 配置参数 * @returns {Promise} */ get(url: string, params?: any, options?: methodOptions): Promise; /** * 发送一个post请求,一般用于添加操作 * @param {string} url 请求路径 * @param {object} [data] 传输给后端的数据 * @param {object} [options] axios 配置参数 * @returns {Promise} */ post(url: string, data?: any, options?: methodOptions): Promise; /** * 发送一个put请求,一般用于更新操作 * @param {string} url 请求路径 * @param {object} [data] 传输给后端的数据 * @param {object} [options] axios 配置参数 * @returns {Promise} */ put(url: string, data?: any, options?: methodOptions): Promise; /** * 发送一个patch请求,一般用于更新部分数据 * @param {string} url 请求路径 * @param {object} [data] 传输给后端的数据 * @param {object} [options] axios 配置参数 * @returns {Promise} */ patch(url: string, data?: any, options?: methodOptions): Promise; /** * 发送一个delete请求,一般用于删除数据,params会被忽略(http协议中定义的) * @param {string} url 请求路径 * @param {object} [params] 传输给后端的数据,拼接在url上,作为query string * @param {object} [options] axios 配置参数 * @returns {Promise} */ del(url: string, params?: any, options?: methodOptions): Promise; /** * 上传,设置contentType为multipart/form-data;,data为FormData * @param url * @param params * @param options */ upload(url: string, params?: any, options?: methodOptions): Promise; /** * ajax 下载文件 * 后端设置header: * content-disposition: attachment;fileName=xxx.exl * content-type: application/octet-stream;charset=UTF-8 * @param url * @param params * @param options * @returns {Promise} */ download(url: string, params?: any, options?: methodOptions): Promise | undefined>; }