TL;DR
REST という設計原則に従って作られた Web API。エンドポイント(URI)と HTTP メソッドの組み合わせで処理が決まる。
仕組み
REST(Representational State Transfer)は、Roy Fielding が博士論文の第 5 章で定義した、分散ハイパーメディアシステムのためのアーキテクチャスタイルである。制約を何も持たないスタイルから始め、次の制約を 1 つずつ足して導かれる。
- クライアントサーバ: ユーザインタフェースの関心とデータの保存の関心を分ける
- ステートレス: 各リクエストは、それを理解するのに必要な情報をすべて含む。セッションの状態はクライアントが持つ
- キャッシュ: レスポンスのデータに、キャッシュできるかどうかを明示的または暗黙的に示す
- 統一インタフェース: コンポーネントの間のインタフェースを統一する。REST をほかのネットワークのスタイルと分ける一番の特徴である
- 階層化システム: 各コンポーネントは、直接やり取りする層しか見えない
- コードオンデマンド: クライアントがコードをダウンロードして実行し、機能を広げられる。可視性が下がるので、任意の制約である
統一インタフェースは、リソースの識別、表現を通じたリソースの操作、自己記述的なメッセージ、アプリケーションの状態のエンジンとしてのハイパーメディアの 4 つの制約からなる。
注意点
エンドポイントが大量に作られやすい。また、リソースの取り方に柔軟性がない。必要のないデータまで返してしまうこと(Over-fetching)や、ネストしたデータを取るために別のエンドポイントを呼ぶ必要があること(Under-fetching)が起きる。