
oRPC是一款用于构建类型安全 API 的 TypeScript 库,最近正式发布了1.0版本,标志着它已经达到了稳定、可用于生产的里程碑,为寻求替代现有 RPC 和 REST 方案并希望获得完整 OpenAPI 集成的开发者提供了新的选择。
oRPC 1.0 引入了一系列旨在简化 API 开发同时保持企业级类型安全的功能。此次发布包含一流的 OpenAPI 支持、对输入、输出和错误的端到端类型安全、对 Date 和 File 等复杂类型的原生支持,以及通过 TanStack Query 与React、Vue、Solid和Svelte等主流前端框架的无缝集成。
oRPC 设计理念的核心是团队所称的“强大而简洁”(powerful simplicity)。开发者可以使用类似编写标准函数的语法定义 API 端点,同时自动获得生产级的功能,例如,OpenAPI 规范生成、服务端行为的兼容性以及契约优先(contract-first)工作流支持。该库开箱即用地支持多种 Schema 校验器,包括Zod、Valibot和ArkType,无需额外的配置。
oRPC 1.0 的一大亮点是其全面的 OpenAPI 实现。与需要第三方插件或已弃用 OpenAPI 支持的竞品不同,oRPC 将 OpenAPI 遵从性直接内建于其核心架构中。该库还支持同时使用多个 Schema 校验器,并提供括号语法(bracket notation)以支持更复杂的 API 结构,这些特性在 tRPC 和 ts-rest 等替代方案中均未提供。
oRPC 中定义过程(procedure)的语法采用链式模式,集成了中间件、校验和错误处理。以下是一个典型的 oRPC 过程示例:
随该版本一同发布的性能基准测试显示,oRPC 相较tRPC有显著的性能优势:类型检查速度快 1.6 倍,运行时性能快 2.8 倍,打包体积约为 tRPC 同类配置的一半。在测试场景中,oRPC 的内存占用为 103MB,远低于 tRPC 的 268MB。不过,团队指出,这些结果会因项目复杂度和运行环境而有所差异。
对于希望从现有方案迁移的开发者,oRPC 提供了详细的迁移指南,包含了并排的代码对比。迁移文档涵盖了从 tRPC 过渡的全过程,包括安装步骤、概念映射以及路由器、过程和客户端配置的更新模式。核心的迁移步骤包括,将t.procedure替换为os、将 query 和 mutation 方法统一为.handler,并将错误处理从TRPCError切换为ORPCError。
社区对此次发布的反应较为谨慎,开发者普遍对 OpenAPI 集成和多框架支持表现出兴趣。GitHub上的讨论围绕与认证库的集成模式和最佳插件配置展开,表明早期采用者已在积极测试生产场景。
在 Reddit 上,开发者就现代Next.js项目是否仍需RPC库展开了辩论。讨论者的共识认为,尽管 Next.js Server Actions 能为简单的 CRUD 操作提供足够的类型安全性,但 oRPC 在特定使用场景中仍具价值。有开发者提到专门使用 oRPC 实现服务器发送事件(SSE),另有开发者强调其内置 OpenAPI 支持是 Server Actions 无法提供的关键差异化优势。
与竞品相比,oRPC 在 TypeScript API 工具生态中的定位很独特:tRPC 擅长 React 场景下的类型安全性但缺乏对 OpenAPI 的支持,ts-rest 提供了契约优先开发和 OpenAPI 支持,而 oRPC 则试图融合两者优势。对比文档显示,oRPC 还提供了 Cloudflare WebSocket 休眠、Vue Pinia Colada 集成和类型安全的文件处理等功能,而竞品要么缺失这些能力,要么需依赖第三方方案实现。
oRPC 是由独立开发者 unnoq 开发的开源 TypeScript 库,采用 MIT 许可证。该项目支持多种运行时环境,包括 Cloudflare Workers、Deno、Bun 和 Node.js,这使其既适用于边缘计算场景,也适用于传统服务器部署。
原文链接:
oRPC Releases Version 1.0 with OpenAPI Support and End to End Type Safety







评论