RPC 是什么?我应该采取什么样的心态?

它只是函数

RPC 是“远程过程调用”(Remote Procedure Call)的缩写。它是一种从一台计算机(客户端)调用另一台计算机(服务器)上的函数的方法。在使用传统的 HTTP/REST API 时,您调用一个 URL 并得到一个响应。使用 RPC 时,您调用一个函数并得到一个响应。

  1. // HTTP/REST
  2. const res = await fetch('/api/users/1');
  3. const user = await res.json();
  4. // RPC
  5. 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媒体查询代码,这些代码在这里没有实际用途,因此我已将它们省略。如果您需要在特定的编程或技术环境中应用这些格式,请确保遵循相应的指南和最佳实践。