概念
什么是 RPC?我应该采用什么思维方式?
它只是函数
RPC 是“远程过程调用”的缩写。它是一种从一台计算机(客户端)调用另一台计算机(服务器)上的函数的方法。使用传统的 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 远程过程调用)是 RPC 的一种实现,专为 TypeScript 单仓库而设计。它有自己的风格,但本质上是 RPC。
不要考虑 HTTP/REST 实现细节
如果您检查 tRPC 应用程序的网络流量,您会发现它相当标准的 HTTP 请求和响应,但您在编写应用程序代码时无需考虑实现细节。您调用函数,tRPC 会处理其他所有事情。您应该忽略 HTTP 动词之类的细节,因为它们在 REST API 中具有意义,但在 RPC 中它们是您函数名称的一部分,例如:getUser(id)
而不是 GET /users/:id
。
词汇表
以下是 tRPC 生态系统中经常使用的术语。我们将在整个文档中使用这些术语,因此熟悉它们很有帮助。大多数这些概念在文档中也有自己的页面。
术语 | 描述 |
---|---|
过程 ↗ | API 端点 - 可以是 查询, 变异,或 订阅. |
查询 | 一个 过程 获取一些数据。 |
变异 | 一个 过程 创建、更新或删除一些数据。 |
订阅 ↗ | 一个 过程 创建持久连接并监听更改。 |
路由器 ↗ | 一个 过程 (以及/或其他路由器)在共享命名空间下。 |
上下文 ↗ | 每个 过程 都可以访问的东西。通常用于会话状态和数据库连接等内容。 |
中间件 ↗ | 一个可以在 过程之前和之后运行代码的函数。可以修改 上下文. |
验证 ↗ | “此输入数据是否包含正确的内容?” |