本文へスキップ
バージョン: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 Remote Procedure Call)は、TypeScriptモノレポ用に設計されたRPCの1つの実装です。独自の機能を持っていますが、本質的にはRPCです。

HTTP/RESTの実装の詳細について考える必要はありません

tRPCアプリケーションのネットワークトラフィックを検査すると、標準的なHTTPリクエストとレスポンスであることがわかりますが、アプリケーションコードを作成する際には実装の詳細について考える必要はありません。関数を呼び出すだけで、tRPCがその他すべてを処理します。HTTP動詞などの詳細は無視してください。REST APIでは意味を持ちますが、RPCでは関数名の代わりに含まれます。たとえば、GET /users/:idではなくgetUser(id)となります。

用語集

以下は、tRPCエコシステムで頻繁に使用される用語です。これらの用語はドキュメント全体で使用されるため、慣れておくことをお勧めします。これらの概念のほとんどは、ドキュメント内に独自のページもあります。

用語説明
プロシージャ ↗APIエンドポイント - これは クエリ, ミューテーション、または サブスクリプション.
クエリある プロシージャ で、データを取得します。
ミューテーションある プロシージャ で、データの作成、更新、または削除を行います。
サブスクリプション ↗ある プロシージャ で、永続的な接続を作成し、変更をリッスンします。
ルーター ↗複数の プロシージャ (および/または他のルーター)を共有名前空間の下にまとめたものです。
コンテキスト ↗すべての プロシージャ がアクセスできるもの。セッション状態やデータベース接続などに一般的に使用されます。
ミドルウェア ↗関数で、 プロシージャの前後に関数を実行できます。変更できます コンテキスト.
バリデーション ↗「この入力データは正しいものですか?」