用途:从 OpenAPI 3.1 文档(在线 /openapi.json URL 或本地文件)生成带类型的 TypeScript 客户端/SDK,替代手写 API 客户端。生成物是构建产物,契约是唯一事实来源,应重新生成而非手工修改。
主要能力:输出类型化模型、每个操作一个异步函数的类型化 SDK,并可通过插件生成 TanStack Query hooks 与 Zod 请求/响应 schema。核心插件 @hey-api/typescript、@hey-api/sdk、@hey-api/schemas 默认包含。
使用方式:安装生成器 npm install @hey-api/openapi-ts -D -E(v0.73.0 起客户端已内置,无需单独安装)。编写 openapi-ts.config.ts,配置 input、output 与 plugins(如 '@hey-api/client-fetch'、'@tanstack/react-query'、'zod')。在 package.json 中加脚本 "gen:api": "openapi-ts",运行 npm run gen:api。SDK 默认返回 { data, error } 不抛错,可设 throwOnError: true 改为抛异常。
适用场景:FastAPI 或其他 OpenAPI 3.1 后端生成前端 TS 客户端;添加生成的 TanStack Query hooks 或 Zod schema;建立契约变更后重新生成与 CI 漂移检查流程。
限制:不要手工编辑生成文件;固定生成器版本(0.x 迭代快);hey-api 主要面向 3.1(FastAPI ≥ 0.99),3.0 文档非最佳适配;查询缓存/失效等用法需配合 tanstack-query 技能;后端与 OpenAPI 规范编写应使用 fastapi / pydantic-v2 技能。具体版本与配置细节请以官方资料为准。