Files
userbase/front/src/utils/axios/abstract.ts
T

91 lines
2.5 KiB
TypeScript

import { BschResponse, AxiosResponse } from "axios";
import axios from "axios";
import { initAxiosInstance } from "./interceptor";
import { baseConfig } from "@/assets/config/api.config";
export interface BschResult {
url: string;
params?: object;
data?: object;
isMsg?: boolean; //是否自动显示错误提示
}
class Abstract {
private apiAxios<T>({ method, url, params, data, isMsg = true }: any): Promise<T> {
const instance = initAxiosInstance(baseConfig);
return new Promise((resolve, reject) => {
instance({
method,
url,
params,
data,
})
.then((res: AxiosResponse<BschResponse, number>) => {
// console.log(res);
let { data } = res;
resolve(data as T);
})
.catch(err => {
console.error(err);
reject(err);
// throw err;
});
});
}
/**
*GET类型的网络请求
*
* @protected
* @template T
* @param {BschResult} { url, params }
* @returns {Promise<T>}
* @memberof Abstract
*/
protected getRequest<T>({ url, params, isMsg = true }: BschResult): Promise<T> {
return this.apiAxios<T>({ method: "GET", url, params, isMsg });
}
/**
*POST类型的网络请求
*
* @protected
* @template T
* @param {BschResult} { url, data }
* @returns {Promise<T>}
* @memberof Abstract
*/
protected postRequest<T>({ url, params, data, isMsg = true }: BschResult): Promise<T> {
return this.apiAxios<T>({ method: "POST", url, params, data, isMsg });
}
/**
*PUT类型的网络请求
*
* @protected
* @template T
* @param {BschResult} { url, data }
* @returns {Promise<T>}
* @memberof Abstract
*/
protected putRequest<T>({ url, params, data, isMsg = true }: BschResult): Promise<T> {
return this.apiAxios<T>({ method: "PUT", url, params, data, isMsg });
}
/**
*DELETE类型的网络请求
*
* @protected
* @template T
* @param {BschResult} { url, params }
* @returns {Promise<T>}
* @memberof Abstract
*/
protected deleteRequest<T>({ url, params, data, isMsg = true }: BschResult): Promise<T> {
return this.apiAxios<T>({ method: "DELETE", url, params, data, isMsg });
}
}
export default Abstract;