コンセプト
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 Remote Procedure Call)は、TypeScriptモノレポ用に設計されたRPCの1つの実装です。独自の機能を持っていますが、本質的にはRPCです。
HTTP/RESTの実装の詳細について考える必要はありません
tRPCアプリケーションのネットワークトラフィックを検査すると、標準的なHTTPリクエストとレスポンスであることがわかりますが、アプリケーションコードを作成する際には実装の詳細について考える必要はありません。関数を呼び出すだけで、tRPCがその他すべてを処理します。HTTP動詞などの詳細は無視してください。REST APIでは意味を持ちますが、RPCでは関数名の代わりに含まれます。たとえば、GET /users/:id
ではなくgetUser(id)
となります。
用語集
以下は、tRPCエコシステムで頻繁に使用される用語です。これらの用語はドキュメント全体で使用されるため、慣れておくことをお勧めします。これらの概念のほとんどは、ドキュメント内に独自のページもあります。
用語 | 説明 |
---|---|
プロシージャ ↗ | APIエンドポイント - これは クエリ, ミューテーション、または サブスクリプション. |
クエリ | ある プロシージャ で、データを取得します。 |
ミューテーション | ある プロシージャ で、データの作成、更新、または削除を行います。 |
サブスクリプション ↗ | ある プロシージャ で、永続的な接続を作成し、変更をリッスンします。 |
ルーター ↗ | 複数の プロシージャ (および/または他のルーター)を共有名前空間の下にまとめたものです。 |
コンテキスト ↗ | すべての プロシージャ がアクセスできるもの。セッション状態やデータベース接続などに一般的に使用されます。 |
ミドルウェア ↗ | 関数で、 プロシージャの前後に関数を実行できます。変更できます コンテキスト. |
バリデーション ↗ | 「この入力データは正しいものですか?」 |