HTTPの標準的なリクエスト/レスポンスモデル。Stripe・GitHubのAPIで広く使われるステートレスなアーキテクチャスタイルです。
REST(Representational State Transfer)は、HTTPの標準的なリクエスト/レスポンスモデルを活用したリソース指向のアーキテクチャスタイルです。2000年にRoy Fieldingが博士論文で提唱しました。
Stripe・GitHub・Twitter(X)・AWSなど、世界中の主要なサービスがREST APIを提供しています。スマートフォンアプリ・Webフロントエンド・マイクロサービス間通信の主要な通信手段として広く使われています。
上のツールでステップを進めると、リクエスト構築 → 送信 → サーバー処理 → レスポンス → 完了の流れが確認できます。シナリオを切り替えてGET/POST/PUT/DELETEの違いも確かめてみましょう。
/api/users/42)、メソッドで操作を表す設計が世界標準となっています。Cache-Control: max-age=60のようなヘッダーでキャッシュ戦略を細かく制御でき、APIのパフォーマンスとサーバー負荷を最適化できます。curlコマンドやPostmanで即座にテストできる手軽さも大きな利点です。/api/users/42 でも、GETなら「ユーザー42を取得」、DELETEなら「ユーザー42を削除」という全く異なる操作を表します。メソッドによって冪等性(同じ操作を繰り返しても同じ結果になるか)も異なります。/api/users/42 のようにリソースを表すURLです。42 はリソースのID(パスパラメータ)、/api/users?role=admin のようにクエリパラメータでフィルタリングもできます。RESTでは「名詞(リソース)をURLで表し、動詞(操作)をメソッドで表す」が設計原則です。Content-Type: application/json ヘッダーで指定します。全ての言語でパースライブラリが提供されており、JavaScriptでは JSON.parse() で即座にオブジェクトへ変換できます。配列・ネストした構造も自然に表現できます。RESTではHTTPメソッドがCRUD操作に対応しています。冪等性(同じ操作を複数回実行しても結果が変わらない性質)はAPI設計の重要な概念です。
| メソッド | CRUD操作 | ボディ | 冪等性 | 典型的なURL |
|---|---|---|---|---|
| GET | Read(取得) | なし | ✓ あり | /api/users |
| POST | Create(作成) | あり | ✗ なし | /api/users |
| PUT | Update(全更新) | あり | ✓ あり | /api/users/42 |
| PATCH | Update(部分更新) | あり | △ 設計次第 | /api/users/42 |
| DELETE | Delete(削除) | なし | ✓ あり | /api/users/42 |