91 lines
2.5 KiB
TypeScript
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;
|