SuperAPI AI 工具集

hono-routing

编程与开发

查看项目

更新于 10-15 12:14

技能介绍

用途

hono-routing 面向使用 Hono 框架构建 API 的场景,目标是在 Cloudflare Workers、Deno、Bun、Node.js 等 JavaScript 运行时上编写类型安全的服务端路由与中间件。资料将其定位为生产可用(Production Ready),并注明依赖为无(框架无关)。

主要能力

基础应用与响应:用 new Hono() 创建应用,通过 c.json()、c.text()、c.html() 返回响应,并 export default app 以供运行时使用;不使用 Express 风格的 res.send()。

路由:支持单参数(c.req.param('id'))、多参数(c.req.param())、通配符参数、查询参数(c.req.query()、c.req.queries()),以及路由参数的正则约束(如仅匹配数字 ID 或 UUID)。支持通过子应用与 app.route() 进行路由分组。

中间件:中间件需 await next() 才能在链中继续,提前返回可阻止后续处理。资料列出内置中间件 logger、cors、prettyJSON、compress、cache,并说明自定义缓存中间件在非 Cloudflare 运行时需要克隆响应(c.res.clone()),因为响应体流只能被消费一次。

流式与 WebSocket:hono/streaming 提供 stream()(二进制)、streamText()(文本,如 AI 响应)、streamSSE()(服务器推送事件)。WebSocket 使用 upgradeWebSocket,在 Cloudflare Workers 上需从 hono/cloudflare-workers 导入,且不支持 onOpen 回调,CORS 等修改头的中间件会与 WebSocket 路由冲突,需用路由分组隔离。

安全中间件:secureHeaders、csrf、bearerAuth、basicAuth、ipRestriction,并可用 hono/combine 的 some、every、except 组合中间件条件逻辑。

类型安全上下文:通过定义 Variables 与 Bindings 泛型,用 c.set() 写入、c.get() 读取类型安全变量,也可扩展自定义上下文对象(如 logger)。

请求校验:支持 Zod(@hono/zod-validator)、Valibot(@hono/valibot-validator)、Typia、ArkType 等。校验目标包括 json、query、param、header、form、cookie,可用 c.req.valid() 取得类型安全数据,并支持自定义错误钩子或抛出 HTTPException。

RPC:可从服务端路由类型推导客户端类型,实现无需手写 API 类型的类型安全客户端/服务端通信。

使用方式

安装:npm install hono@4.11.4;校验相关按需安装对应校验器与库,例如 npm install zod@4.3.5 @hono/zod-validator@0.7.6、npm install valibot@1.2.0 @hono/valibot-validator@0.6.1、npm install typia @hono/typia-validator@0.1.2、npm install arktype @hono/arktype-validator@2.0.1。

资料给出 15 分钟快速上手路径:安装 Hono、创建基础应用、加入请求校验,并分为路由模式、中间件与校验、类型安全上下文扩展、请求校验、类型化路由(RPC)等部分展开。

关键注意事项

校验中间件必须写在具体处理器的参数位置,而不是通过 app.use() 全局挂载,否则 c.req.valid() 的类型推断会退化为 never。在 Cloudflare Workers 上 WebSocket 需要按平台方式导入并规避 CORS 冲突。响应体流不可重复消费,缓存时必须克隆。

适用场景与限制

适用于需要跨运行时部署、类型安全 API 与统一中间件/校验/流式处理的 JavaScript 后端与边缘函数开发。资料未给出价格、收费或性能基准等事实信息,暂未提供相关内容。