diff --git a/index.ts b/index.ts index 47d4d0f..ea4d48e 100644 --- a/index.ts +++ b/index.ts @@ -1,5 +1,6 @@ import manageRobot from "./controllers/manageRobot"; import initSchedule from "./schedule"; +import netTool from "./service/netTool"; // 启动定时任务 initSchedule(); @@ -9,9 +10,7 @@ const server = Bun.serve({ const url = new URL(req.url); if (url.pathname === "/ci") { const chat_id = url.searchParams.get("chat_id"); - console.log("🚀 ~ fetch ~ chat_id:", chat_id); - if (!chat_id) - return new Response("chat_id is required!", { status: 400 }); + if (!chat_id) return netTool.badRequest("chat_id is required!"); manageRobot.sendCIReportByChatId(chat_id); return Response.json({ code: 0, @@ -19,9 +18,9 @@ const server = Bun.serve({ data: "reporting...", }); } - return new Response("OK"); + return netTool.ok(); }, port: 3000, }); -console.log(`Listening on ${server.hostname}:${server.port}`); \ No newline at end of file +console.log(`Listening on ${server.hostname}:${server.port}`); diff --git a/service/netTool.ts b/service/netTool.ts index 5ae9f5e..dc9e496 100644 --- a/service/netTool.ts +++ b/service/netTool.ts @@ -79,21 +79,26 @@ const netTool = async ({ }); // 获取响应数据 let resData: any = null; + let resText: string = ""; + try { - resData = await res.json(); - } catch (error) { - resData = "解析为JSON时出错"; - } + resText = await res.text(); + resData = JSON.parse(resText); + } catch {} // 记录响应 - logResponse(res, method, headers, payload, resData); + logResponse(res, method, headers, payload, resData || resText); if (!res.ok) { if (resData?.msg) { throw new Error(resData.msg); } + if (resText) { + throw new Error(resText); + } throw new Error("网络响应异常"); } - if (resData === "解析为JSON时出错") { + // http 错误码正常,但解析异常 + if (!resData) { throw new Error("解析响应数据异常"); } return resData as T; @@ -182,4 +187,45 @@ netTool.patch = ( ): Promise => netTool({ url, method: "patch", payload, queryParams, additionalHeaders }); +/** + * 创建一个表示400 Bad Request的响应对象。 + * + * @param msg - 错误消息。 + * @param requestId - 请求ID。 + * @returns 一个表示400 Bad Request的响应对象。 + */ +netTool.badRequest = (msg: string, requestId?: string) => + Response.json({ code: 400, msg, requestId }, { status: 400 }); + +/** + * 创建一个表示404 Not Found的响应对象。 + * + * @param msg - 错误消息。 + * @param requestId - 请求ID。 + * @returns 一个表示404 Not Found的响应对象。 + */ +netTool.notFound = (msg: string, requestId?: string) => + Response.json({ code: 404, msg, requestId }, { status: 404 }); + +/** + * 创建一个表示500 Internal Server Error的响应对象。 + * + * @param msg - 错误消息。 + * @param data - 错误数据。 + * @param requestId - 请求ID。 + * @returns 一个表示500 Internal Server Error的响应对象。 + */ +netTool.serverError = (msg: string, data?: any, requestId?: string) => + Response.json({ code: 500, msg, data, requestId }, { status: 500 }); + +/** + * 创建一个表示200 OK的响应对象。 + * + * @param data - 响应数据。 + * @param requestId - 请求ID。 + * @returns 一个表示200 OK的响应对象。 + */ +netTool.ok = (data?: any, requestId?: string) => + Response.json({ code: 200, msg: "ok", data, requestId }); + export default netTool;