写点什么

oRPC 发布 1.0 版本,支持 OpenAPI 和端到端类型安全

作者:Daniel Curtis

  • 2025-12-24
    北京
  • 本文字数:1480 字

    阅读完需:约 5 分钟

大小:708.79K时长:04:01
oRPC发布1.0版本,支持OpenAPI和端到端类型安全

oRPC是一款用于构建类型安全 API 的 TypeScript 库,最近正式发布了1.0版本,标志着它已经达到了稳定、可用于生产的里程碑,为寻求替代现有 RPC 和 REST 方案并希望获得完整 OpenAPI 集成的开发者提供了新的选择。

 

oRPC 1.0 引入了一系列旨在简化 API 开发同时保持企业级类型安全的功能。此次发布包含一流的 OpenAPI 支持、对输入、输出和错误的端到端类型安全、对 Date 和 File 等复杂类型的原生支持,以及通过 TanStack Query 与ReactVueSolidSvelte等主流前端框架的无缝集成。

 

oRPC 设计理念的核心是团队所称的“强大而简洁”(powerful simplicity)。开发者可以使用类似编写标准函数的语法定义 API 端点,同时自动获得生产级的功能,例如,OpenAPI 规范生成、服务端行为的兼容性以及契约优先(contract-first)工作流支持。该库开箱即用地支持多种 Schema 校验器,包括ZodValibotArkType,无需额外的配置。

 

oRPC 1.0 的一大亮点是其全面的 OpenAPI 实现。与需要第三方插件或已弃用 OpenAPI 支持的竞品不同,oRPC 将 OpenAPI 遵从性直接内建于其核心架构中。该库还支持同时使用多个 Schema 校验器,并提供括号语法(bracket notation)以支持更复杂的 API 结构,这些特性在 tRPC 和 ts-rest 等替代方案中均未提供。

 

oRPC 中定义过程(procedure)的语法采用链式模式,集成了中间件、校验和错误处理。以下是一个典型的 oRPC 过程示例:

const getBands = os .use(dbProvider) .use(requiredAuth) .route({ method: 'GET', path: '/bands/{id}' }) .input(z.object({ id: z.string() })) .handler(async ({ input, context }) => { // Implementation logic })
复制代码

随该版本一同发布的性能基准测试显示,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

2025-12-24 11:011

评论

发布
暂无评论

微信业务架构图 & 学生管理系统方案

无语

「架构实战营」

你不知道的Java工具类库,十倍提升开发效率

一灯架构

Java java面试 10月月更

一个 ExpressionChangedAfterItHasBeenCheckedError 错误的解决过程

汪子熙

typescript 前端开发 angular web开发 10月月更

Python基础(十) | Numpy详细教程

timerring

Numpy库 10月月更

【LeetCode】最大升序子数组和Java题解

Albert

LeetCode 10月月更

【Nacos源码之配置管理 五】为什么把配置文件Dump到磁盘中

石臻臻的杂货铺

nacos 10月月更

Surpass Day——Java面向对象的创建和使用

胖虎不秃头

Java 10月月更 se

高效编程不一定意味着要疯狂写代码

宇宙之一粟

程序员 10月月更

免费申请和使用IntelliJ IDEA商业版License指南

程序员欣宸

ide 10月月更 ieda

与学长共话成长,领跑毕业新未来

宇宙之一粟

校招 10月月更

Collections之ArrayList源码解读(七)

知识浅谈

ArrayList 10月月更

C++学习---cstdio的源码学习分析07-刷新文件流函数fflush

桑榆

c++ 源码分析 10月月更

HashMap高阶用法,十倍提升开发效率

一灯架构

Java java面试 10月月更

Python基础(八) | 万字详解深浅拷贝、生成器、迭代器以及装饰器

timerring

装饰器 Python Monad 迭代器 生成器 10月月更

Python基础(九) | time random collections itertools标准库详解

timerring

random Collections time 10月月更

学习大数据培训是否比较靠谱

小谷哥

竟然还有人说ArrayList是2倍扩容,今天带你手撕ArrayList源码

一灯架构

Java java面试 10月月更

单模光缆与多模光缆,网络工程师必知的光缆类型

wljslmz

网络工程 10月月更 单模光纤 多模光纤 弱电

前端培训机构选择需要注意什么?

小谷哥

爬虫练习题(二)

张立梵

Python. 10月月更 爬虫案例

推荐一款id 生成器:Hashids

xiaoxi666

传统架构面临的挑战及上云的优势

穿过生命散发芬芳

企业上云 10月月更

【Nacos源码之配置管理 六】集群模式下服务器之间是如何互相感知的

石臻臻的杂货铺

10月月更 nacso

java培训与线上自学哪个比较好

小谷哥

Go设计模式“金旋风”——代理模式

Regan Yue

Go 设计模式 代理模式 10月月更

Vue3入门指北(十)侦听器

Augus

Vue3 10月月更

【一Go到底】第七天---运算符

指剑

Go golang 10月月更

学习编程既要追根溯源、又要紧跟时代步伐

玄兴梦影

c 编程 语法

前端培训学习路线比较靠谱

小谷哥

Surpass Day——Java语法基础

胖虎不秃头

Java 10月月更 se

大数据开发的方法有哪些

小谷哥

oRPC发布1.0版本,支持OpenAPI和端到端类型安全_架构_InfoQ精选文章