HTTPメソッド
GET, POST, PUT, DELETEの違いと使い分けを理解しよう
とは
は、サーバーに対して「どんな操作をしたいか」を伝えるものです。
同じURL /users でも、によって動作が変わります。
| 操作 | 例 | |
|---|---|---|
| GET | 取得する | ユーザー一覧を取得 |
| POST | 作成する | 新しいユーザーを作成 |
| PUT | 更新する | ユーザー情報を更新 |
| DELETE | 削除する | ユーザーを削除 |
4つの主要
GET - データを取得する
サーバーからデータを取得します。最も基本的なです。
GET /users → ユーザー一覧を取得
GET /users/1 → ID:1のユーザーを取得
GET /users?name=田中 → 名前が「田中」のユーザーを検索
- リクエストボディを持たない
- URLにパラメータを含めることができる(クエリパラメータ)
- 何度実行してもサーバーの状態を変えない
POST - データを作成する
サーバーに新しいデータを作成します。
POST /users
Content-Type: application/json
{
"name": "田中太郎",
"email": "tanaka@example.com"
}
- リクエストボディに作成したいデータを含める
- 実行するたびに新しいデータが作られる
PUT - データを更新する
既存のデータを更新します。
PUT /users/1
Content-Type: application/json
{
"name": "田中太郎",
"email": "tanaka-new@example.com"
}
- URLで更新対象を指定する(
/users/1→ ID:1のユーザー) - リクエストボディに更新後のデータを含める
PUTとPATCH
データの更新には PUT と PATCH の2つのがあります。
- PUT: データ全体を置き換える
- PATCH: データの一部だけを更新する
実際のプロジェクトでは、両者が混同して使われたり、「PUTのみ使う」「PATCHのみ使う」といった独自ルールがあったりします。
DELETE - データを削除する
既存のデータを削除します。
DELETE /users/1
- URLで削除対象を指定する
- 通常、リクエストボディは持たない
CRUDとの対応
Webアプリケーションの基本操作は と呼ばれます。はCRUDに対応しています。
| 意味 | ||
|---|---|---|
| Create | 作成 | POST |
| Read | 読み取り | GET |
| Update | 更新 | PUT / PATCH |
| Delete | 削除 | DELETE |
について
には「」という性質があります。
べき等(idempotent) とは、「同じ操作を何度実行しても、結果が変わらない」という意味です。
| べき等 | 説明 | |
|---|---|---|
| GET | ○ | 何度実行してもサーバーの状態を変えない |
| PUT | ○ | 何度更新しても同じ状態になる |
| DELETE | ○ | 何度削除しても「存在しない」状態になる |
| POST | × | 実行するたびに新しいデータが作られる |
なぜが重要?
ネットワークの問題でが重複送信されることがあります。
べき等な(GET, PUT, DELETE)は再送信されても問題ありませんが、POSTは重複実行されると同じデータが複数作られてしまう可能性があります。
API開発では、この性質を意識して設計することが大切です。
RESTful APIの慣習
API設計では、URLとの組み合わせ方に一般的なパターンがあります。これを RESTful な設計と呼びます。
GET /users → ユーザー一覧を取得
GET /users/1 → ID:1のユーザーを取得
POST /users → 新しいユーザーを作成
PUT /users/1 → ID:1のユーザーを更新
DELETE /users/1 → ID:1のユーザーを削除
URLは「何を」、は「どうする」を表します。この組み合わせで、直感的に理解しやすいAPIが作れます。
セクションまとめ
- ✓GET(取得)、POST(作成)、PUT(更新)、DELETE(削除)が基本
- ✓はCRUD操作に対応している
- ✓GET, PUT, DELETEはべき等、POSTはべき等ではない
- ✓RESTful APIではURLとの組み合わせで操作を表現する