概念
什麼是 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 端點 - 可以是 查詢、突變或 訂閱。 |
查詢 | 取得一些資料的 程序。 |
突變 | 建立、更新或刪除一些資料的 程序。 |
訂閱 ↗ | 建立持續連線並偵聽變更的 程序。 |
路由器 ↗ | 在共用命名空間下的 程序(和/或其他路由器)集合。 |
內容 ↗ | 每個 程序都可以存取的東西。通常用於會話狀態和資料庫連線等事項。 |
中間件 ↗ | 可以在 程序前後執行程式碼的函式。可以修改 內容。 |
驗證 ↗ | 「這些輸入資料是否包含正確的內容?」 |