Utils
高级
更多实用工具
会话工具
clearSession(event, config)
清除当前请求的会话数据。
getSession(event, config)
获取当前请求的会话。
sealSession(event, config)
加密并签名当前请求的会话数据。
unsealSession(_event, config, sealed)
解密并验证当前请求的会话数据。
updateSession(event, config, update?)
更新当前请求的会话数据。
useSession(event, config)
为当前请求创建一个会话管理器。
deleteCookie(event, name, serializeOptions?)
通过名称删除一个 cookie。
getCookie(event, name)
通过名称获取 cookie 值。
parseCookies(event)
解析请求以获取 HTTP Cookie 标头字符串,并返回所有 cookie 名称-值对的对象。
setCookie(event, name, value, options?)
通过名称设置 cookie 值。
getRequestFingerprint(event, opts)
获取传入请求的唯一指纹。
defineWebSocket(hooks)
定义 WebSocket 钩子。
defineWebSocketHandler(hooks)
定义 WebSocket 事件处理程序。
sanitizeStatusCode(statusCode?, defaultStatusCode)
确保状态码是一个有效的 HTTP 状态码。
sanitizeStatusMessage(statusMessage)
确保状态消息在响应中是安全的。
允许的字符:水平制表符、空格或可见的 ASCII 字符:https://www.rfc-editor.org/rfc/rfc7230#section-3.1.2
withBase(base, input)
返回一个新事件处理程序,该处理程序在调用原始处理程序之前移除事件的基本 URL。
示例:
handleCacheHeaders(event, opts)
检查请求的缓存头(If-Modified-Since
)并添加缓存头(Last-Modified, Cache-Control)。注意:public
缓存控制将默认添加。
fetchWithEvent(event, req, init?, options?: { fetch: F })
使用事件的上下文和头部进行 fetch 请求。
getProxyRequestHeaders(event)
获取请求头对象,不包括已知会在代理时导致问题的头部。
proxy(event, target, opts)
向目标 URL 发起代理请求并将响应发送回客户端。
proxyRequest(event, target, opts)
将传入请求代理到目标 URL。
appendCorsHeaders(event, options)
将 CORS 头部附加到响应中。
appendCorsPreflightHeaders(event, options)
将 CORS 预检头部附加到响应中。
handleCors(event, options)
处理传入请求的 CORS。
如果传入请求是 CORS 预检请求,它将附加 CORS 预检头并发送 204 响应。
如果返回值为 true
,则请求已处理,无需进一步操作。
示例:
isCorsOriginAllowed(origin, options)
检查传入请求是否为 CORS 请求。
isPreflightRequest(event)
检查传入请求是否为 CORS 预检请求。
createEventStream(event, opts?)
初始化一个 EventStream 实例,用于创建 服务器发送事件。
示例:
Cookie 工具
指纹工具
WebSocket 工具
数据清理
基础
const api = createApp()
.get("/", () => "Hello API!");
const app = createApp();
.use("/api/**", withBase("/api", api.handler));
缓存
代理
CORS
const app = createApp();
const router = createRouter();
router.use("/", async (event) => {
const corsRes = handleCors(event, {
origin: "*",
preflight: {
statusCode: 204,
},
methods: "*",
});
if (corsRes) {
return corsRes;
}
// 你的代码在这里
});
);
服务器发送事件 (SSE)
import { createEventStream, sendEventStream } from "h3";
app.use("/sse", (event) => {
const eventStream = createEventStream(event);
// 每秒发送一条消息
const interval = setInterval(async () => {
await eventStream.push("Hello world");
}, 1000);
// 在连接终止时清理间隔并关闭流
eventStream.onClosed(async () => {
console.log("正在关闭 SSE...");
clearInterval(interval);
await eventStream.close();
});
return eventStream.send();
});