跳至主内容
版本:11.x

核心概念

非官方测试版翻译

本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →

什么是 RPC?应如何理解其设计理念?

本质是函数调用

RPC 是"远程过程调用(Remote Procedure Call)"的缩写。它允许在一台计算机(客户端)上调用另一台计算机(服务器)上的函数。与传统 HTTP/REST API 通过 URL 调用获取响应不同,RPC 通过直接调用函数获取结果。

ts
// HTTP/REST
const res = await fetch('/api/users/1');
const user = await res.json();
// RPC
const user = await api.users.getById({ id: 1 });
ts
// HTTP/REST
const res = await fetch('/api/users/1');
const user = await res.json();
// RPC
const 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 端点 - 可以是 querymutationsubscription
Query用于获取数据的 procedure
Mutation用于创建、更新或删除数据的 procedure
Subscription ↗建立持久连接并监听变更的 procedure
Router ↗共享命名空间下的 procedures(和/或其他 routers)集合。
Context ↗每个 procedure 均可访问的数据。常用于会话状态和数据库连接等场景。
Middleware ↗可在 procedure 前后执行代码的函数。可修改 context
Validation ↗"输入数据格式是否正确?"