HTTPメソッドからCRUD操作へのマッピング
RESTful API設計時にHTTPメソッドをCreate、Read、Update、Delete操作にマッピングする方法を解説します。
REST Patterns
詳細な説明
CRUDからHTTPへのマッピング
REST APIは慣例的にデータベースのCRUD(Create、Read、Update、Delete)操作をHTTPメソッドにマッピングします:
標準マッピング
| CRUD操作 | HTTPメソッド | エンドポイントパターン | 例 |
|---|---|---|---|
| 作成 | POST | POST /resources |
POST /api/users |
| 読み取り(一覧) | GET | GET /resources |
GET /api/users |
| 読み取り(単体) | GET | GET /resources/:id |
GET /api/users/42 |
| 更新(完全) | PUT | PUT /resources/:id |
PUT /api/users/42 |
| 更新(部分) | PATCH | PATCH /resources/:id |
PATCH /api/users/42 |
| 削除 | DELETE | DELETE /resources/:id |
DELETE /api/users/42 |
URI設計
リソースは名詞であり、動詞ではありません:
# 良い例
POST /api/users (ユーザーを作成)
GET /api/users/42 (ユーザー42を取得)
PUT /api/users/42 (ユーザー42を更新)
# 悪い例
POST /api/createUser
GET /api/getUser?id=42
POST /api/updateUser
ネストされたリソース
GET /api/users/42/posts (ユーザー42の投稿一覧)
POST /api/users/42/posts (ユーザー42の投稿を作成)
GET /api/users/42/posts/7 (ユーザー42の投稿7を取得)
DELETE /api/users/42/posts/7 (投稿7を削除)
ステータスコードの慣例
| 操作 | 成功ステータス | よくあるエラー |
|---|---|---|
| POST(作成) | 201 Created | 400, 409, 422 |
| GET(読み取り) | 200 OK | 404 |
| PUT(置換) | 200 or 204 | 400, 404, 409 |
| PATCH(更新) | 200 or 204 | 400, 404, 422 |
| DELETE(削除) | 204 No Content | 404 |
基本CRUD以外
一部の操作はCRUDにきれいに収まりません:
- 検索 —
GET /api/users/search?q=aliceまたは複雑なクエリの場合POST /api/users/search - バルク操作 — IDのボディを持つ
POST /api/users/bulk-delete - アクション — 非CRUDアクション用の
POST /api/orders/42/cancel
ユースケース
新しいREST APIを設計するチームがデータベーステーブルをリソースエンドポイントにマッピングします:商品作成はPOST /api/products、読み取りはGET /api/products/:id、価格更新はPATCH /api/products/:id、廃番商品の削除はDELETE /api/products/:idです。