核心概念
非官方测试版翻译
本页面由 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 动词等实现细节——这些在 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 ↗ | "输入数据格式是否正确?" |