# 更多工具 > 更多 H3 实用工具。 ## 基础 ### `withBase(base, input)` 返回一个新的事件处理器,该处理器在调用原始处理器之前会移除事件的基础 URL。 **示例:** ```ts const api = new H3() .get("/", () => "Hello API!"); const app = new H3(); .use("/api/**", withBase("/api", api.handler)); ``` ## 事件 ### `getEventContext(event)` 获取事件的上下文,如果不存在,则在 `req.context` 上初始化一个新上下文。 ### `isEvent(input)` 检查输入是否为 H3Event 对象。 ### `isHTTPEvent(input)` 检查输入是否为具有 `{ req: Request }` 签名的对象。 ### `mockEvent(_request, options?)` ## 中间件 ### `bodyLimit(limit)` 定义一个中间件,用于检查请求体的大小是否在指定限制内。 如果请求体大小超过限制,则抛出 `413` 请求实体过大错误。如果你需要自定义该情况的处理,请使用 `assertBodySize`。 ### `onError(hook)` 定义一个错误发生时运行的中间件。 你可以从处理器返回一个新的响应来优雅地处理错误。 ### `onRequest(hook)` 定义一个在每次请求时运行的中间件。 ### `onResponse(hook)` 定义一个在响应生成后运行的中间件。 你可以从处理器返回一个新的响应以替换原始响应。 ## WebSocket ### `defineWebSocket(hooks)` 定义 WebSocket 钩子。 ### `defineWebSocketHandler()` 定义 WebSocket 事件处理器。 ## 适配器 ### `defineNodeHandler(handler)` ### `defineNodeMiddleware(handler)` ### `fromNodeHandler(handler)` ### `fromWebHandler()` ### `toNodeHandler(app)` 将 H3 应用实例转换为具有 (IncomingMessage, ServerResponse) => void 签名的 NodeHandler。