egg_server/services/netTool.ts
zhaoyingbo b7437f47e4
All checks were successful
Egg CI/CD / build-image (push) Successful in 49s
Egg CI/CD / deploy (push) Successful in 23s
feat: 优化请求处理 & 拆分Type
2024-06-08 09:15:14 +00:00

54 lines
1.2 KiB
TypeScript

interface NetGetParams {
url: string;
method: string;
params?: any;
data?: any;
headers?: any;
}
const netTool = <T = any>({
url,
method,
params,
data,
headers,
}: NetGetParams): Promise<T> => {
let fullUrl = url;
if (params) {
const queryString = new URLSearchParams(params).toString();
fullUrl = `${url}?${queryString}`;
}
return fetch(fullUrl, {
method,
body: JSON.stringify(data),
headers: {
"Content-Type": "application/json",
...headers,
},
}).then((response) => {
if (!response.ok) {
throw new Error("网络响应异常");
}
return response.json() as Promise<T>;
});
};
netTool.get = <T = any>(url: string, params?: any, headers?: any): Promise<T> =>
netTool({ url, method: "get", params, headers });
netTool.post = <T = any>(
url: string,
data?: any,
params?: any,
headers?: any
): Promise<T> => netTool({ url, method: "post", data, params, headers });
netTool.del = <T = any>(url: string, data: any, headers?: any): Promise<T> =>
netTool({ url, method: "delete", data, headers });
netTool.patch = <T = any>(url: string, data: any, headers?: any): Promise<T> =>
netTool({ url, method: "patch", data, headers });
export default netTool;