HTTPメソッドを理解しよう
ストーリー
「先輩、HTTPリクエストの最初に GET って書いてありましたが、他にもあるんですか?」
「そう。GET、POST、PUT、DELETE が基本の4つだよ」
「4つ?データベースのCRUDに似てますね」
「まさにその通り!HTTPメソッドとCRUDは対応しているんだ」
HTTPメソッドとは
HTTPリクエストの「目的」を示す指定。サーバーに「何をしてほしいか」を伝えます。
GET /users HTTP/1.1 ← 「ユーザー一覧を見せて」
POST /users HTTP/1.1 ← 「新しいユーザーを作って」
PUT /users/1 HTTP/1.1 ← 「ユーザー1の情報を更新して」
DELETE /users/1 HTTP/1.1 ← 「ユーザー1を削除して」
主要な4つのメソッド
GET - データを取得する
GET /articles HTTP/1.1
- 目的: データの取得(読み取り)
- ボディ: なし
- 用途: Webページの表示、データの一覧取得
レストランの例え: 「メニューを見せてください」
POST - データを作成する
POST /articles HTTP/1.1
Content-Type: application/json
{"title": "新しい記事", "content": "本文です"}
- 目的: 新しいデータの作成
- ボディ: 作成するデータを含む
- 用途: フォーム送信、新規ユーザー登録、記事投稿
レストランの例え: 「Aセットを注文します」
PUT - データを更新する
PUT /articles/1 HTTP/1.1
Content-Type: application/json
{"title": "修正した記事", "content": "修正した本文です"}
- 目的: 既存データの更新(全体を置き換え)
- ボディ: 更新後のデータを含む
- 用途: プロフィール更新、記事の編集
レストランの例え: 「注文をBセットに変更してください」
DELETE - データを削除する
DELETE /articles/1 HTTP/1.1
- 目的: データの削除
- ボディ: 通常なし
- 用途: アカウント削除、記事の削除
レ ストランの例え: 「注文をキャンセルしてください」
CRUDとの対応
| CRUD | HTTPメソッド | 説明 |
|---|---|---|
| Create(作成) | POST | 新しいデータを作る |
| Read(読み取り) | GET | データを取得する |
| Update(更新) | PUT / PATCH | データを更新する |
| Delete(削除) | DELETE | データを削除する |
PATCH メソッド
PUT がデータ全体を置き換えるのに対し、PATCH は 一部だけ を更新します。
PUT /users/1 → ユーザー1のデータを全部書き換え
PATCH /users/1 → ユーザー1のデータの一部だけ変更
その他のメソッド
| メソッド | 用途 |
|---|---|
| HEAD | レスポンスのヘッダーだけ取得(ボディなし) |
| OPTIONS | サーバーがサポートするメソッドを確認 |
実務で最も使うのは GET と POST です。REST APIを扱う場合は PUT と DELETE も頻繁に使います。
安全性と冪等性
安全なメソッド
サーバーのデータを 変更しない メソッド。
| メソッド | 安全? |
|---|---|
| GET | はい(データを読むだけ) |
| POST | いいえ(データを作成する) |
| PUT | いいえ(データを更新する) |
| DELETE | いいえ(データを削除する) |
冪等(べきとう)なメソッド
何回実行しても結果が同じ になるメソッド。
| メソッド | 冪等? | 理由 |
|---|---|---|
| GET | はい | 何回取得しても同じデータ |
| POST | いいえ | 実行するたびに新しいデータが作られる |
| PUT | はい | 同じデータで何回更新しても結果は同じ |
| DELETE | はい | 既に削除済みなら何も起きない |
REST API でのメソッド使用例
Webアプリケーションの API ではこのようにメソッドを使い分けます。
GET /api/users → ユーザー一覧を取得
GET /api/users/1 → ユーザー1の詳細を取得
POST /api/users → 新しいユーザーを作成
PUT /api/users/1 → ユーザー1の情報を更新
DELETE /api/users/1 → ユーザー1を削除
URLは同じ /api/users でも、メソッドによって動作が変わります。
まとめ
| ポイント | 内容 |
|---|---|
| GET | データの取得(Read) |
| POST | データの作成(Create) |
| PUT | データの更新(Update) |
| DELETE | データの削除(Delete) |
| CRUD対応 | HTTPメソッドはCRUD操作に対応している |
チェックリスト
- GET、POST、PUT、DELETE の違いを説明できる
- CRUDとHTTPメソッドの対応を理解した
- GETが安全なメソッドであると理解した
- REST APIでのメソッドの使い方をイメージできる
次のステップへ
HTTPメソッドが分かりましたね。
次のセクションでは、サーバーからの返事である ステータスコード を学びます。200、404、500 など、数字の意味を読み解きましょう。
推定読了時間: 30分