用途:从现有 tRPC 路由生成 REST 端点和 OpenAPI 文档,让内部使用类型安全的 tRPC,同时为外部消费者提供 REST/Swagger。
主要能力:通过 OpenApiMeta 元数据为过程定义 method、path、tags、summary、description、protect、deprecated、requestHeaders、responseHeaders、contentTypes 等;使用 generateOpenApiDocument 生成 OpenAPI 文档;用 createOpenApiExpressMiddleware 挂载 REST 端点,并用 swagger-ui-express 提供文档界面。路径参数使用 {param} 语法并与 input Zod 对象字段对应;GET 的 query 参数自动映射。
使用方式:安装 npm install trpc-to-openapi swagger-ui-express,开发依赖 npm install -D @types/swagger-ui-express;在 initTRPC 中启用 .meta<OpenApiMeta>();为需要暴露的过程添加 .meta({ openapi: { ... } }) 并定义 .input() 与 .output();在 Express 中同时挂载 /trpc 与 /api,并暴露 /docs 与 /openapi.json。
适用场景:内部为 tRPC、外部需要 REST 的第三方集成;需要 Swagger/OpenAPI 文档;非 React Native 的移动应用;混合语言微服务互操作;公开 API 需符合 REST 标准。
限制:所有客户端均为 TypeScript 时纯 tRPC 更合适;仅内部使用或无文档需求时可跳过;仅为公开过程添加 meta;缺失 .output() 会破坏 OpenAPI 生成;路径命名需保持一致;受保护路由需标记 protect: true。tRPC v11+ 与 Zod 为必要条件。