跳至主要内容
版本:11.x

概念

什么是 RPC?我应该采用什么思维方式?

它只是函数

RPC 是“远程过程调用”的缩写。它是一种从一台计算机(客户端)调用另一台计算机(服务器)上的函数的方法。使用传统的 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 远程过程调用)是 RPC 的一种实现,专为 TypeScript 单仓库而设计。它有自己的风格,但本质上是 RPC。

不要考虑 HTTP/REST 实现细节

如果您检查 tRPC 应用程序的网络流量,您会发现它相当标准的 HTTP 请求和响应,但您在编写应用程序代码时无需考虑实现细节。您调用函数,tRPC 会处理其他所有事情。您应该忽略 HTTP 动词之类的细节,因为它们在 REST API 中具有意义,但在 RPC 中它们是您函数名称的一部分,例如:getUser(id) 而不是 GET /users/:id

词汇表

以下是 tRPC 生态系统中经常使用的术语。我们将在整个文档中使用这些术语,因此熟悉它们很有帮助。大多数这些概念在文档中也有自己的页面。

术语描述
过程 ↗API 端点 - 可以是 查询, 变异,或 订阅.
查询一个 过程 获取一些数据。
变异一个 过程 创建、更新或删除一些数据。
订阅 ↗一个 过程 创建持久连接并监听更改。
路由器 ↗一个 过程 (以及/或其他路由器)在共享命名空间下。
上下文 ↗每个 过程 都可以访问的东西。通常用于会话状态和数据库连接等内容。
中间件 ↗一个可以在 过程之前和之后运行代码的函数。可以修改 上下文.
验证 ↗“此输入数据是否包含正确的内容?”