Guide

H3 应用实例

H3 应用实例是 h3 服务器的核心,负责处理传入请求。

你可以使用 new H3() 创建一个新的 h3 应用实例:

server.mjs
import { H3 } from "h3";

const app = new H3(/* 可选配置 */);

H3 应用选项

初始化应用时可以传入全局应用配置。

示例: 创建一个启用详细日志的应用。

const app = new H3({ debug: true });

全局钩子

初始化 h3 应用时,可以注册全局钩子:

  • onError
  • onRequest
  • onBeforeResponse

这些钩子会在每次请求时调用,可用于为你的应用添加全局逻辑,如日志记录、错误处理等。

const app = new H3({
  onError: (error) => {
    console.error(error);
  },
  onRequest: (event) => {
    console.log("请求:", event.path);
  },
});

H3 应用方法

app.fetch(request, init?, context?)

类似于 fetch 的 API,允许请求应用路由。

输入可以是 URL、相对路径或标准的 Request 对象。

返回值是一个标准的 Response,或者一个解析为 Response 的 Promise。

示例:

const response = await app.fetch("/");

console.log(response, await response.text());

app.handler(event)

一个兼容 h3 的事件处理程序,用于组合多个 h3 应用实例。

app.resolve(method, path)

通过方法和路径来解析路由处理器,适用于自定义场景。

app.on(method, route, handler)

为指定的 HTTP 方法注册路由处理器。

app.[method](route, handler)

为指定的 HTTP 方法注册路由处理器(app.on(method, ...) 的快捷方式)。

app.all(route, handler)

为所有 HTTP 方法注册路由处理器。

app.use(handler, opts?)

注册全局中间件处理器。

app.use(route, handler, opts?)

注册带路径的全局中间件处理器。

H3 应用属性

app.config

全局 h3 实例配置。

app.websocket

兼容 🔌 crossws 的 Websocket 钩子。