URL でリソースを表し、メソッドで操作を表す。ステータスコードで結果を伝える。
REST は、URL でリソース(もの)を表し、HTTP メソッドで操作を表す設計のスタイルです。HTTP の決まりに沿うので、キャッシュ・リトライ・監視などの仕組みをそのまま使えます。
URL の命名・ネスト
| 操作 | メソッドと URL | 成功時 |
|---|---|---|
| 一覧 | GET /users?status=active&limit=20 | 200 |
| 1件 | GET /users/42 | 200(なければ 404) |
| 作成 | POST /users | 201 + Location |
| 一部更新 | PATCH /users/42 | 200 |
| 削除 | DELETE /users/42 | 204 |
| 子のリソース | GET /users/42/orders | 200 |
| 動作(REST で表しにくいもの) | POST /orders/7/cancel | 200 / 202 |
- 名詞の複数形にし、動詞(
/getUser)は入れない。小文字とハイフン、またはチーム内で決めた形に統一する。 - ネストは1段まで(
/users/42/orders)。深くすると URL が長くなり、親の ID が無いと使えなくなる。2段以上は/orders?user_id=42のように絞り込みで表す。 - JSON のキーの形(
snake_caseかcamelCase)、日時(ISO 8601、UTC)もそろえる。
面接ではこう答える
REST は、URL でリソースを表し、HTTP のメソッドで操作を表す設計のスタイルです。URL は名詞の複数形にし、ネストは1段までにして、深い絞り込みはクエリで表します。作成は POST で 201 と Location、削除は 204 のように、ステータスコードで結果を伝えます。HTTP の決まりに沿うので、キャッシュやリトライ、監視の仕組みをそのまま使えます。
Webとの関わりWeb・App・他のサービスが使う API を設計するときの基本の型です。