用途:Hono RPC 用于在服务端与客户端之间共享 API 规范,借助 TypeScript 类型推断构建端到端类型安全的 API 客户端,无需 OpenAPI 或代码生成。适用于全栈 TypeScript 应用、monorepo 中前后端共享类型,以及在编译期校验 API 调用。
主要能力:零代码生成;自动 TypeScript 推断;配合 Zod 校验器;可感知状态码的响应类型;支持路径参数、查询参数、JSON 体、表单数据与请求头。客户端提供 $get、$post、$put、$delete、$patch 等方法,以及 InferRequestType、InferResponseType 类型工具。
基本用法:服务端使用 Hono 定义路由并链式调用,通过 zValidator 添加校验,最后 export type AppType = typeof route。客户端以 import { hc } from 'hono/client' 创建客户端:const client = hc<AppType>('http://localhost:3000'),随后调用如 client.users.$get()、client.users[':id'].$get({ param: { id: '123' } })、client.posts.$post({ json: {...} }) 等。
配置与多文件:hc 支持自定义 fetch 与默认/动态 headers。大型应用可将路由拆分到多个文件,通过 app.route() 组合后导出类型。
限制与注意事项:tsconfig 需开启 strict 才能正确推断类型;路由必须链式定义,分开写会丢失类型;建议显式指定状态码,避免使用 c.notFound() 以免响应类型推断异常;建议保持一致的响应结构。版本为 Hono 4.x,许可 MIT。