feat: 更新网络请求工具函数
This commit is contained in:
parent
f66bf4b39c
commit
153f15d839
@ -1,29 +1,27 @@
|
|||||||
interface NetGetParams {
|
interface NetRequestParams {
|
||||||
url: string;
|
url: string;
|
||||||
method: string;
|
method: string;
|
||||||
params?: any;
|
queryParams?: any;
|
||||||
data?: any;
|
payload?: any;
|
||||||
headers?: any;
|
additionalHeaders?: any;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 打印请求日志
|
* 记录响应详情并返回响应日志对象。
|
||||||
* @param response
|
* @param response - 响应对象。
|
||||||
* @param method
|
* @param method - 请求使用的HTTP方法。
|
||||||
* @param data
|
* @param headers - 请求头。
|
||||||
|
* @param requestBody - 请求体。
|
||||||
|
* @param responseBody - 响应体。
|
||||||
|
* @returns 响应日志对象。
|
||||||
*/
|
*/
|
||||||
const logResponse = async (
|
const logResponse = (
|
||||||
response: Response,
|
response: Response,
|
||||||
method: string,
|
method: string,
|
||||||
data: any,
|
headers: any,
|
||||||
headers: any
|
requestBody: any,
|
||||||
|
responseBody: any
|
||||||
) => {
|
) => {
|
||||||
let responseData = null;
|
|
||||||
try {
|
|
||||||
responseData = await response.json();
|
|
||||||
} catch (error) {
|
|
||||||
responseData = "parse to json error";
|
|
||||||
}
|
|
||||||
const responseLog = {
|
const responseLog = {
|
||||||
ok: response.ok,
|
ok: response.ok,
|
||||||
status: response.status,
|
status: response.status,
|
||||||
@ -32,70 +30,156 @@ const logResponse = async (
|
|||||||
method: method,
|
method: method,
|
||||||
requestHeaders: headers,
|
requestHeaders: headers,
|
||||||
responseHeaders: response.headers,
|
responseHeaders: response.headers,
|
||||||
requestBody: data,
|
requestBody,
|
||||||
responseBody: responseData as any,
|
responseBody,
|
||||||
};
|
};
|
||||||
console.log("🚀 ~ responseLog:", JSON.stringify(responseLog, null, 2));
|
console.log("🚀 ~ responseLog:", JSON.stringify(responseLog, null, 2));
|
||||||
return responseLog;
|
return responseLog;
|
||||||
};
|
};
|
||||||
|
|
||||||
const netTool = <T = any>({
|
/**
|
||||||
|
* 发送网络请求并返回一个解析为响应数据的Promise。
|
||||||
|
* @param url - 要发送请求的URL。
|
||||||
|
* @param method - 请求使用的HTTP方法。
|
||||||
|
* @param queryParams - 要包含在URL中的查询参数。
|
||||||
|
* @param payload - 请求的有效负载数据。
|
||||||
|
* @param additionalHeaders - 要包含在请求中的附加头。
|
||||||
|
* @returns 一个解析为响应数据的Promise。
|
||||||
|
* @throws 如果网络响应不成功或存在解析错误,则抛出错误。
|
||||||
|
*/
|
||||||
|
const netTool = async <T = any>({
|
||||||
url,
|
url,
|
||||||
method,
|
method,
|
||||||
params,
|
queryParams,
|
||||||
data,
|
payload,
|
||||||
headers,
|
additionalHeaders,
|
||||||
}: NetGetParams): Promise<T> => {
|
}: NetRequestParams): Promise<T> => {
|
||||||
|
// 拼接完整的URL
|
||||||
let fullUrl = url;
|
let fullUrl = url;
|
||||||
if (params) {
|
if (queryParams) {
|
||||||
if (typeof params === "string") {
|
if (typeof queryParams === "string") {
|
||||||
fullUrl = `${url}?${params}`;
|
fullUrl = `${url}?${queryParams}`;
|
||||||
} else {
|
} else {
|
||||||
const queryString = new URLSearchParams(params).toString();
|
const queryString = new URLSearchParams(queryParams).toString();
|
||||||
fullUrl = `${url}?${queryString}`;
|
if (queryString) fullUrl = `${url}?${queryString}`;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return fetch(fullUrl, {
|
// 设置请求头
|
||||||
|
const headers = {
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
...additionalHeaders,
|
||||||
|
};
|
||||||
|
|
||||||
|
// 发送请求
|
||||||
|
const res = await fetch(fullUrl, {
|
||||||
method,
|
method,
|
||||||
body: JSON.stringify(data),
|
body: JSON.stringify(payload),
|
||||||
headers: {
|
headers,
|
||||||
"Content-Type": "application/json",
|
});
|
||||||
...headers,
|
// 获取响应数据
|
||||||
},
|
let resData: any = null;
|
||||||
})
|
try {
|
||||||
.then((response) => logResponse(response, method, data, headers))
|
resData = await res.json();
|
||||||
.then((responseLog) => {
|
} catch (error) {
|
||||||
if (!responseLog.ok) {
|
resData = "解析为JSON时出错";
|
||||||
if (responseLog?.responseBody?.msg) {
|
}
|
||||||
throw new Error(responseLog.responseBody.msg);
|
|
||||||
}
|
// 记录响应
|
||||||
throw new Error("网络响应异常");
|
logResponse(res, method, headers, payload, resData);
|
||||||
}
|
if (!res.ok) {
|
||||||
if (responseLog.responseBody === "parse to json error") {
|
if (resData?.msg) {
|
||||||
throw new Error("解析响应数据异常");
|
throw new Error(resData.msg);
|
||||||
}
|
}
|
||||||
return responseLog.responseBody as T;
|
throw new Error("网络响应异常");
|
||||||
});
|
}
|
||||||
|
if (resData === "解析为JSON时出错") {
|
||||||
|
throw new Error("解析响应数据异常");
|
||||||
|
}
|
||||||
|
return resData as T;
|
||||||
};
|
};
|
||||||
|
|
||||||
netTool.get = <T = any>(url: string, params?: any, headers?: any): Promise<T> =>
|
/**
|
||||||
netTool({ url, method: "get", params, headers });
|
* 发送GET请求并返回一个解析为响应数据的Promise。
|
||||||
|
*
|
||||||
|
* @param url - 要发送请求的URL。
|
||||||
|
* @param queryParams - 要包含在URL中的查询参数。
|
||||||
|
* @param additionalHeaders - 要包含在请求中的附加头。
|
||||||
|
* @returns 一个解析为响应数据的Promise。
|
||||||
|
*/
|
||||||
|
netTool.get = <T = any>(
|
||||||
|
url: string,
|
||||||
|
queryParams?: any,
|
||||||
|
additionalHeaders?: any
|
||||||
|
): Promise<T> =>
|
||||||
|
netTool({ url, method: "get", queryParams, additionalHeaders });
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发送POST请求并返回一个解析为响应数据的Promise。
|
||||||
|
*
|
||||||
|
* @param url - 要发送请求的URL。
|
||||||
|
* @param payload - 请求的有效负载数据。
|
||||||
|
* @param queryParams - 要包含在URL中的查询参数。
|
||||||
|
* @param additionalHeaders - 要包含在请求中的附加头。
|
||||||
|
* @returns 一个解析为响应数据的Promise。
|
||||||
|
*/
|
||||||
netTool.post = <T = any>(
|
netTool.post = <T = any>(
|
||||||
url: string,
|
url: string,
|
||||||
data?: any,
|
payload?: any,
|
||||||
params?: any,
|
queryParams?: any,
|
||||||
headers?: any
|
additionalHeaders?: any
|
||||||
): Promise<T> => netTool({ url, method: "post", data, params, headers });
|
): Promise<T> =>
|
||||||
|
netTool({ url, method: "post", payload, queryParams, additionalHeaders });
|
||||||
|
|
||||||
netTool.put = <T = any>(url: string, data: any, headers?: any): Promise<T> =>
|
/**
|
||||||
netTool({ url, method: "put", data, headers });
|
* 发送PUT请求并返回一个解析为响应数据的Promise。
|
||||||
|
*
|
||||||
|
* @param url - 要发送请求的URL。
|
||||||
|
* @param payload - 请求的有效负载数据。
|
||||||
|
* @param queryParams - 要包含在URL中的查询参数。
|
||||||
|
* @param additionalHeaders - 要包含在请求中的附加头。
|
||||||
|
* @returns 一个解析为响应数据的Promise。
|
||||||
|
*/
|
||||||
|
netTool.put = <T = any>(
|
||||||
|
url: string,
|
||||||
|
payload: any,
|
||||||
|
queryParams?: any,
|
||||||
|
additionalHeaders?: any
|
||||||
|
): Promise<T> =>
|
||||||
|
netTool({ url, method: "put", payload, queryParams, additionalHeaders });
|
||||||
|
|
||||||
netTool.del = <T = any>(url: string, data: any, headers?: any): Promise<T> =>
|
/**
|
||||||
netTool({ url, method: "delete", data, headers });
|
* 发送DELETE请求并返回一个解析为响应数据的Promise。
|
||||||
|
*
|
||||||
|
* @param url - 要发送请求的URL。
|
||||||
|
* @param payload - 请求的有效负载数据。
|
||||||
|
* @param queryParams - 要包含在URL中的查询参数。
|
||||||
|
* @param additionalHeaders - 要包含在请求中的附加头。
|
||||||
|
* @returns 一个解析为响应数据的Promise。
|
||||||
|
*/
|
||||||
|
netTool.del = <T = any>(
|
||||||
|
url: string,
|
||||||
|
payload: any,
|
||||||
|
queryParams?: any,
|
||||||
|
additionalHeaders?: any
|
||||||
|
): Promise<T> =>
|
||||||
|
netTool({ url, method: "delete", payload, queryParams, additionalHeaders });
|
||||||
|
|
||||||
netTool.patch = <T = any>(url: string, data: any, headers?: any): Promise<T> =>
|
/**
|
||||||
netTool({ url, method: "patch", data, headers });
|
* 发送PATCH请求并返回一个解析为响应数据的Promise。
|
||||||
|
*
|
||||||
|
* @param url - 要发送请求的URL。
|
||||||
|
* @param payload - 请求的有效负载数据。
|
||||||
|
* @param queryParams - 要包含在URL中的查询参数。
|
||||||
|
* @param additionalHeaders - 要包含在请求中的附加头。
|
||||||
|
* @returns 一个解析为响应数据的Promise。
|
||||||
|
*/
|
||||||
|
netTool.patch = <T = any>(
|
||||||
|
url: string,
|
||||||
|
payload: any,
|
||||||
|
queryParams?: any,
|
||||||
|
additionalHeaders?: any
|
||||||
|
): Promise<T> =>
|
||||||
|
netTool({ url, method: "patch", payload, queryParams, additionalHeaders });
|
||||||
|
|
||||||
export default netTool;
|
export default netTool;
|
||||||
|
@ -5,7 +5,10 @@ const API_KEY = "1dfz4wlpbbgiky0";
|
|||||||
const sendMessage = async (body: any) => {
|
const sendMessage = async (body: any) => {
|
||||||
const URL = "https://egg.imoaix.cn/message";
|
const URL = "https://egg.imoaix.cn/message";
|
||||||
try {
|
try {
|
||||||
const res = await netTool.post(URL, body);
|
const res = await netTool.post(URL, {
|
||||||
|
api_key: API_KEY,
|
||||||
|
...body,
|
||||||
|
});
|
||||||
return res;
|
return res;
|
||||||
} catch {
|
} catch {
|
||||||
return null;
|
return null;
|
||||||
@ -14,7 +17,6 @@ const sendMessage = async (body: any) => {
|
|||||||
|
|
||||||
sendMessage.byGroupId = async (group_id: string, content: string) => {
|
sendMessage.byGroupId = async (group_id: string, content: string) => {
|
||||||
return sendMessage({
|
return sendMessage({
|
||||||
api_key: API_KEY,
|
|
||||||
group_id,
|
group_id,
|
||||||
msg_type: "interactive",
|
msg_type: "interactive",
|
||||||
content,
|
content,
|
||||||
@ -23,7 +25,6 @@ sendMessage.byGroupId = async (group_id: string, content: string) => {
|
|||||||
|
|
||||||
sendMessage.byChatId = async (chat_id: string, content: string) => {
|
sendMessage.byChatId = async (chat_id: string, content: string) => {
|
||||||
return sendMessage({
|
return sendMessage({
|
||||||
api_key: API_KEY,
|
|
||||||
receive_id: chat_id,
|
receive_id: chat_id,
|
||||||
receive_id_type: "chat_id",
|
receive_id_type: "chat_id",
|
||||||
msg_type: "interactive",
|
msg_type: "interactive",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user