核心概念
非官方测试版翻译
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
什么是 RPC?应如何理解其设计理念?
本质是函数调用
RPC 是"远程过程调用(Remote Procedure Call)"的缩写。它允许在一台计算机(客户端)上调用另一台计算机(服务器)上的函数。与传统 HTTP/REST API 通过 URL 调用获取响应不同,RPC 通过直接调用函数获取结果。
ts// HTTP/RESTconst res = await fetch('/api/users/1');const user = await res.json();// RPCconst user = await api.users.getById({ id: 1 });
ts// HTTP/RESTconst res = await fetch('/api/users/1');const user = await res.json();// RPCconst user = await api.users.getById({ id: 1 });
tRPC(TypeScript 远程过程调用)是专为 TypeScript 单体仓库设计的 RPC 实现方案。它在保留 RPC 核心特性的同时,具有独特的实现风格。
无需考虑 HTTP/REST 的实现细节
当你观察 tRPC 应用的网络流量时,会发现它本质上是标准的 HTTP 请求与响应。但在编写应用代码时,你无需关注这些实现细节——只需调用函数,其余工作均由 tRPC 自动处理。请忽略类似 HTTP 请求方法(如 GET/POST)的细节,这些在 REST API 中承载特定语义,而在 RPC 架构中则直接融入函数命名体系。例如:使用 getUser(id) 替代 GET /users/:id。
术语表
以下是 tRPC 生态系统中常用的核心术语。这些术语将贯穿整个文档,建议提前熟悉。大部分概念在文档中都有专门的说明页面。
| 术语 | 说明 |
|---|---|
| Procedure ↗ | API 端点 - 可以是 query、mutation 或 subscription。 |
| Query | 用于获取数据的 procedure。 |
| Mutation | 用于创建、更新或删除数据的 procedure。 |
| Subscription ↗ | 建立持久连接并监听变更的 procedure。 |
| Router ↗ | 共享命名空间下的 procedures(和/或其他 routers)集合。 |
| Context ↗ | 每个 procedure 均可访问的数据。常用于会话状态和数据库连接等场景。 |
| Middleware ↗ | 可在 procedure 前后执行代码的函数。可修改 context。 |
| Validation ↗ | "输入数据格式是否正确?" |