RPC 是什么?我应该采取什么样的心态?
它只是函数
RPC 是“远程过程调用”(Remote Procedure Call)的缩写。它是一种从一台计算机(客户端)调用另一台计算机(服务器)上的函数的方法。在使用传统的 HTTP/REST API 时,您调用一个 URL 并得到一个响应。使用 RPC 时,您调用一个函数并得到一个响应。
// 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 Remote Procedure Call)是 RPC 的一种实现,专为 TypeScript 单仓库项目设计。它有自己独特的风格,但本质上是 RPC。
不要纠结于 HTTP/REST 的实现细节
如果您检查 tRPC 应用程序的网络流量,您会发现它实际上是相当标准的 HTTP 请求和响应,但在编写应用程序代码时,您不需要考虑实现细节。您调用函数,tRPC 会处理其他一切。您应该忽略像 HTTP 动词这样的细节,因为在 REST API 中它们携带含义,但在 RPC 中,它们成为您函数名称的一部分,例如:getUser(id)
而不是 GET /users/:id
。
词汇表
以下是在 tRPC 生态系统中经常使用的一些术语。我们将在文档中使用这些术语,因此熟悉它们是很好的。这些概念中的大多数在文档中也有自己的页面。
术语 | 描述 |
---|---|
过程 ↗ | API 端点 - 可以是 查询、变更 或 订阅。 |
查询 | 获取一些数据的 过程。 |
变异 | 创建、更新或删除一些数据的 过程。 |
订阅 ↗ | 创建持久连接并监听变化的 过程。 |
路由器 ↗ | 在共享命名空间下的 过程(和/或其他路由器)的集合。 |
上下文 ↗ | 每个 过程 都可以访问的东西。通常用于会话状态和数据库连接等。 |
中间件 ↗ | 可以在 过程 之前和之后运行代码的函数。可以修改 上下文。 |
验证 ↗ | “这个输入数据包含正确的内容吗?” |
请注意,由于您提供的文本包含了一些用于网页布局的CSS媒体查询代码,这些代码在这里没有实际用途,因此我已将它们省略。如果您需要在特定的编程或技术环境中应用这些格式,请确保遵循相应的指南和最佳实践。