import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse, } from 'axios';
export interface IMAxios { request<T = any, D = any>(config: AxiosRequestConfig<D>): Promise<T>;
get<T = any, D = any>(url: string, config?: AxiosRequestConfig<D>): Promise<T>;
delete<T = any, D = any>(url: string, config?: AxiosRequestConfig<D>): Promise<T>;
head<T = any, D = any>(url: string, config?: AxiosRequestConfig<D>): Promise<T>;
options<T = any, D = any>(url: string, config?: AxiosRequestConfig<D>): Promise<T>;
post<T = any, D = any>(url: string, data?: D, config?: AxiosRequestConfig<D>): Promise<T>;
put<T = any, D = any>(url: string, data?: D, config?: AxiosRequestConfig<D>): Promise<T>;
patch<T = any, D = any>(url: string, data?: D, config?: AxiosRequestConfig<D>): Promise<T>;
postForm<T = any, D = any>(url: string, data?: D, config?: AxiosRequestConfig<D>): Promise<T>;
putForm<T = any, D = any>(url: string, data?: D, config?: AxiosRequestConfig<D>): Promise<T>;
patchForm<T = any, D = any>(url: string, data?: D, config?: AxiosRequestConfig<D>): Promise<T>;
upload<T = any, D = any>(url: string, data?: D, config?: AxiosRequestConfig<D>): Promise<T>; }
export class MAxios implements IMAxios { instance: AxiosInstance;
constructor({baseURL, timeout}: { baseURL?: string, timeout?: number }) { this.instance = axios.create({ baseURL: baseURL, timeout: timeout, }); }
upload<T = any, D = any>(url: string, data?: D | undefined, config?: AxiosRequestConfig<D> | undefined): Promise<T> { return this.request({ method: 'post', headers: { 'Content-Type': 'multipart/form-data' }, url, data, ...config }); }
request<T = any, D = any>(config: AxiosRequestConfig<D>): Promise<T> { return new Promise<T>((resolve, reject) => { this.instance.request(config).then((response: AxiosResponse) => { resolve(response.data); }).catch(e => { reject(e); }); }); }
get<T = any, D = any>(url: string, config?: AxiosRequestConfig<D> | undefined): Promise<T> { return this.request({ method: 'get', url, ...config }); }
delete<T = any, D = any>(url: string, config?: AxiosRequestConfig<D> | undefined): Promise<T> { return this.request({ method: 'delete', url, ...config }); }
head<T = any, D = any>(url: string, config?: AxiosRequestConfig<D> | undefined): Promise<T> { return this.request({ method: 'head', url, ...config }); }
options<T = any, D = any>(url: string, config?: AxiosRequestConfig<D> | undefined): Promise<T> { return this.request({ method: 'options', url, ...config }); }
post<T = any, D = any>(url: string, data?: D | undefined, config?: AxiosRequestConfig<D> | undefined): Promise<T> { return this.request({ method: 'post', url, data, ...config }); }
put<T = any, D = any>(url: string, data?: D | undefined, config?: AxiosRequestConfig<D> | undefined): Promise<T> { return this.request({ method: 'put', url, data, ...config }); }
patch<T = any, D = any>(url: string, data?: D | undefined, config?: AxiosRequestConfig<D> | undefined): Promise<T> { return this.request({ method: 'patch', url, data, ...config }); }
postForm<T = any, D = any>(url: string, data?: D | undefined, config?: AxiosRequestConfig<D> | undefined): Promise<T> { return this.request({ method: 'post', headers: { 'Content-Type': 'application/x-www-form-urlencode; charset=UTF-8' }, url, data, ...config }); }
putForm<T = any, D = any>(url: string, data?: D | undefined, config?: AxiosRequestConfig<D> | undefined): Promise<T> { return this.request({ method: 'put', headers: { 'Content-Type': 'application/x-www-form-urlencode; charset=UTF-8' }, url, data, ...config }); }
patchForm<T = any, D = any>(url: string, data?: D | undefined, config?: AxiosRequestConfig<D> | undefined): Promise<T> { return this.request({ method: 'patch', headers: { 'Content-Type': 'application/x-www-form-urlencode; charset=UTF-8' }, url, data, ...config }); } }
const instance = new MAxios({ baseURL: import.meta.env.VITE_APP_API, timeout: 15000 }); export default instance;
|