Hono Routing & Middleware 是一份围绕 Hono 框架路由与中间件使用的技能资料,状态标注为 Production Ready,最后更新于 2025-10-22,依赖标注为无(框架无关)。资料中列出的相关版本包括 hono@4.10.2、zod@4.1.12、valibot@1.1.0、@hono/zod-validator@0.7.4、@hono/valibot-validator@0.5.3。
一、用途与定位 Hono 用于构建类型安全的 API,提供快速、轻量的路由能力,可运行在 Cloudflare Workers、Deno、Bun、Node.js、Vercel 等 JavaScript 运行时上。资料给出的特点包括:基于 Web 标准、体积约 10KB、无依赖、完整 TypeScript 支持与类型推断、跨运行时灵活部署。
二、快速开始 安装命令为 npm install hono@4.10.2。基础应用通过 import { Hono } from 'hono' 创建实例,使用 app.get('/', (c) => c.json({ message: 'Hello Hono!' })) 定义路由,并 export default app 供运行时使用。资料强调:使用 c.json()、c.text()、c.html() 返回响应;直接返回响应,而不是像 Express 那样使用 res.send();导出 app 以适配各运行时。
三、主要能力
- 路由模式:支持 GET、POST、PUT、DELETE 等基础路由,app.on(['GET','POST'], ...) 多方法路由,app.all() 匹配所有方法;支持单参数、多参数、通配符(/files/*)与命名通配符(/files/:filepath{.+});支持查询参数 c.req.query()、c.req.queries();支持通过子应用 app.route('/api', api) 进行路由分组。资料提示路由按顺序匹配、先匹配先胜,具体路由应放在通配符路由之前,参数始终为字符串。
- 中间件组合:支持全局中间件 app.use('*', ...) 与路由级中间件;中间件中必须调用 await next(),可在 next() 之后检查 c.error;内置中间件包括 logger、cors、prettyJSON、compress、cache 等;支持中间件链式调用与自定义中间件(如计时、请求 ID、错误日志),并可用 c.set() 在中间件间共享数据。
- 类型安全的上下文扩展:通过定义 Bindings 与 Variables 类型,使 c.get() 获得类型安全;c.set() 在中间件中写入,c.get() 在处理器中读取;支持自定义上下文扩展(如注入 logger)。
- 请求校验:支持 Zod(zValidator)、Valibot(vValidator)、Typia(typiaValidator)、ArkType(arktypeValidator)等校验库;校验目标包括 json、query、param、header、form、cookie;校验后使用 c.req.valid() 获取类型安全数据;可用 z.transform() 转换字符串为数字或日期;校验失败默认返回 400,也支持自定义错误钩子或抛出 HTTPException。
- 类型化路由(RPC):服务端需以 const route = app.post(...) 形式定义并导出 typeof route 或 typeof app;客户端通过 import { hc } from 'hono/client' 与 hc<AppType>(url) 创建类型安全客户端,实现请求与响应的完整类型推断,无需手写 API 类型。资料还给出多路由导出方式,以及通过导出特定路由组而非整个 app 来优化大型应用类型推断性能的做法。
- 错误处理:使用 HTTPException 处理预期错误(400、401、403、404),可携带自定义响应;资料提到意外错误(500)应使用 onError 全局错误处理器(原文在此处截断,后续内容暂未提供)。
四、适用场景 适合需要在多种 JavaScript 运行时上部署、追求轻量与类型安全的 API 开发场景,尤其是 Cloudflare Workers 等边缘运行时;适合需要请求校验、中间件组合与端到端类型推断(RPC)的项目。
五、限制与说明 资料未提供收费、价格、性能基准或具体平台限制等信息;部分内容(如 onError 全局错误处理、内置中间件目录、校验库对比、RPC 深入指南)以引用文件形式提及,正文未完整展开,相关细节暂未提供。