Guide
事件对象
事件对象携带传入请求、准备好的响应和上下文。
每当新的 HTTP 请求到达时,h3 内部会创建一个事件对象,并将其传递给事件处理器,直到发送响应为止。
事件会经过所有的生命周期钩子和可组合工具,用作上下文。
示例:
app.get("/", async (event) => {
// 记录 HTTP 请求
console.log(`[${event.req.method}] ${event.req.url}`);
// 解析的 URL 和查询参数
const searchParams = event.url.searchParams;
// 尝试读取请求的 JSON body
const jsonBody = await event.req.json().catch(() => {});
return "OK";
});
H3 事件属性
event.context
上下文是一个包含关于请求的任意信息的对象。
你可以将自定义属性存储在 event.context
中,以便在各种工具间共享。
event.req
基于原生 Web Request 的传入 HTTP 请求信息,并包含额外的运行时扩展(参见 srvx 文档)。
app.get("/", async (event) => {
const url = event.req.url;
const method = event.req.method;
const headers = event.req.headers;
// (注意:请求体只能使用一次,可以用以下任一方法)
const bodyStream = await event.req.body;
const textBody = await event.req.text();
const jsonBody = await event.req.json();
return "OK";
});
event.url
访问完整解析后的请求 URL。
event.res
基于部分 Response 选项 的准备好的 HTTP 响应。
示例:
app.get("/", (event) => {
event.res.status = 200;
event.res.statusText = "OK";
event.res.headers.set("x-test", "works");
return "OK";
});