perf: 通用CRUD

This commit is contained in:
pan 2024-03-15 18:02:19 +08:00
parent 08ed64d7ef
commit 7443ac3ac4
2 changed files with 66 additions and 30 deletions

View File

@ -1,39 +1,58 @@
import { http } from "@/utils/http"; import { http } from "@/utils/http";
import type { PureHttpRequestConfig } from "@/utils/http/types.d";
import type { AxiosRequestConfig } from "axios";
import type { ApiAbstract } from "@/utils/http/ApiAbstract"; import type { ApiAbstract } from "@/utils/http/ApiAbstract";
export const baseUrlApi = (url: string) => `/api/${url}`; export const baseUrlApi = (url: string) => `/api/${url}`;
export const baseUrlAuth = (url: string) => `/auth/${url}`; export const baseUrlAuth = (url: string) => `/auth/${url}`;
export const baseUrlAvatar = (url: string) => `/avatar/${url}`; export const baseUrlAvatar = (url: string) => `/avatar/${url}`;
export const get = (params: any) => { /** 单独抽离的CRUD工具函数 */
return http.request<ApiAbstract>("get", baseUrlApi("menus"), { class crud {
params /** 单独抽离的get工具函数 */
}); public get<T, P>(
}; url: string,
params?: AxiosRequestConfig<T>,
config?: PureHttpRequestConfig
): Promise<ApiAbstract<P>> {
return http.get<T, ApiAbstract<P>>(baseUrlApi(url), params, config);
}
export const add = (data: any) => { /** 单独抽离的post工具函数 */
return http.request("post", baseUrlApi("menus"), { public post<T, P>(
data url: string,
}); params?: AxiosRequestConfig<T>,
}; config?: PureHttpRequestConfig
): Promise<ApiAbstract<P>> {
return http.post<T, ApiAbstract<P>>(baseUrlApi(url), params, config);
}
export const del = (ids: number[] | any) => { /** 单独抽离的put工具函数 */
return http.request("delete", baseUrlApi("menus"), { public put<T, P>(
data: ids url: string,
}); params?: AxiosRequestConfig<T>,
}; config?: PureHttpRequestConfig
export const edit = (data: any) => { ): Promise<ApiAbstract<P>> {
return http.request<ApiAbstract>("put", baseUrlApi("menus"), { return http.put<T, ApiAbstract<P>>(baseUrlApi(url), params, config);
data }
});
}; /** 单独抽离的delete工具函数 */
export const download = (data: any) => { public delete<T, P>(
return http.request<Blob>( url: string,
"get", params?: AxiosRequestConfig<T>,
baseUrlApi("menus/download"), config?: PureHttpRequestConfig
{ ): Promise<ApiAbstract<P>> {
data return http.delete<T, ApiAbstract<P>>(baseUrlApi(url), params, config);
}, }
{ responseType: "blob" }
); /** 单独抽离的delete工具函数 */
}; public download<T, P>(
url: string,
params?: AxiosRequestConfig<T>,
config?: PureHttpRequestConfig
): Promise<P> {
return http.get<T, P>(baseUrlApi(url + "/download"), params, config);
}
}
export const CRUD = new crud();

View File

@ -161,6 +161,23 @@ class PureHttp {
): Promise<P> { ): Promise<P> {
return this.request<P>("get", url, params, config); return this.request<P>("get", url, params, config);
} }
/** 单独抽离的put工具函数 */
public put<T, P>(
url: string,
params?: AxiosRequestConfig<T>,
config?: PureHttpRequestConfig
): Promise<P> {
return this.request<P>("put", url, params, config);
}
/** 单独抽离的delete工具函数 */
public delete<T, P>(
url: string,
params?: AxiosRequestConfig<T>,
config?: PureHttpRequestConfig
): Promise<P> {
return this.request<P>("delete", url, params, config);
}
} }
export const http = new PureHttp(); export const http = new PureHttp();