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 实例,用于创建 服务器发送事件

示例:

指纹工具

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();
});