ウェブエンジニア問題集

HTTPメソッド — GET・POST・PUT・DELETEの使い分け

HTTPリクエストには必ず メソッド が含まれます。メソッドは「このリクエストで何をしたいのか」をサーバーに伝える動詞のようなものです。

この章では、Web APIで使う主要なHTTPメソッドの意味と使い分け、そして設計で重要になる べき等性安全性 の概念を整理します。

学習者学習者

データを送るのはとりあえず全部 POST でいい気がするけど…GET や PUT ってわざわざ使い分ける必要あるの?


主要なHTTPメソッド

分岐で悩む男性のイラスト

最もよく使う4つのメソッドは、CRUDの各操作に対応します。

メソッド意味CRUD
GETリソースの取得Readユーザー情報を取得する
POSTリソースの作成Create新しいユーザーを登録する
PUTリソースの全体更新Updateユーザー情報を丸ごと書き換える
DELETEリソースの削除Deleteユーザーを削除する
GET    /api/users/1        → ユーザー1の情報を取得
POST   /api/users           → 新しいユーザーを作成
PUT    /api/users/1        → ユーザー1の情報を全体更新
DELETE /api/users/1        → ユーザー1を削除

その他のメソッド

上記4つに加えて、実務で登場するメソッドがいくつかあります。

メソッド意味よくある使い方
PATCHリソースの部分更新名前だけ変える、ステータスだけ変える
OPTIONSサーバーが対応するメソッドの確認CORSのプリフライトリクエスト
HEADGETと同じだがボディなしリソースの存在確認、キャッシュチェック

PUTPATCH の違いは、PUTが「リソース全体を送り直す」のに対し、PATCHが「変更したいフィールドだけ送る」という点です。

PUT /api/users/1
{ "name": "Bob", "email": "bob@example.com", "role": "admin" }
// ← 全フィールドを送る

PATCH /api/users/1
{ "name": "Bob" }
// ← 変えたいフィールドだけ送る

安全性とべき等性

HTTPメソッドには 安全性(Safe)べき等性(Idempotent) という2つの性質があります。API設計でメソッドを正しく選ぶための基準です。

安全性 — そのリクエストがサーバーの状態を変更しないこと。GETは安全、POSTは安全ではない。

べき等性 — 同じリクエストを何回送っても結果が同じであること。GETやPUTはべき等、POSTはべき等ではない。

メソッド安全べき等
GETはいはい
POSTいいえいいえ
PUTいいえはい
DELETEいいえはい
PATCHいいえいいえ

なぜべき等性が重要なのか

ネットワークは不安定です。リクエストを送ったのにレスポンスが返ってこなかった場合、「サーバーに届いたのか、届かなかったのか」がわかりません。

べき等なメソッド(GET、PUT、DELETE)なら、もう一度同じリクエストを送っても問題ない ので安全にリトライできます。POSTは送り直すと2件作成される可能性があるため、リトライには工夫が必要です。


GETリクエストの原則

GETは最も頻繁に使われるメソッドです。いくつかの重要な原則があります。

1. GETでデータを変更してはいけない

// NG — GETで削除処理
GET /api/users/1/delete

// OK — DELETEメソッドを使う
DELETE /api/users/1

GETは検索エンジンのクローラーやブラウザのプリフェッチが自動的に送ることがあります。GETで副作用がある操作を作ると、意図せずデータが変更される危険があります。

2. パラメータはクエリ文字列で渡す

GET /api/users?page=2&limit=20&sort=name

GETにはリクエストボディを含めないのが慣例です。技術的には可能ですが、多くのHTTPクライアントやプロキシがGETのボディを無視するため、実務では避けます。


POSTリクエストの使い方

POSTは新しいリソースを作成するときに使います。

POST /api/users
Content-Type: application/json

{
  "name": "Alice",
  "email": "alice@example.com"
}

レスポンスには通常 201 Created と、作成されたリソースの情報が返ります。

HTTP/1.1 201 Created
Location: /api/users/42

{
  "id": 42,
  "name": "Alice",
  "email": "alice@example.com"
}

Location ヘッダーで作成されたリソースのURLを返すのが行儀の良いAPIです。


よくある誤用パターン

1. すべてPOSTで処理する

// NG — 全部POST
POST /api/getUser     { "id": 1 }
POST /api/deleteUser  { "id": 1 }

// OK — メソッドで意図を表現する
GET    /api/users/1
DELETE /api/users/1

メソッドを正しく使うと、URLを見ただけで「何をするAPIか」がわかります。

2. GETで更新処理を行う

// NG — ブラウザのプリフェッチやクローラーでも実行される
GET /api/users/1/activate

状態を変える操作には POST、PUT、PATCH、DELETE を使います。


まとめ

  • HTTPメソッドは CRUD操作 に対応する: GET=Read、POST=Create、PUT/PATCH=Update、DELETE=Delete
  • 安全性 はサーバーの状態を変えないこと、べき等性 は何回送っても同じ結果になること
  • GETは データを変更しない・クエリ文字列に機密情報を入れない が原則
  • POSTは べき等ではない ため、リトライには注意が必要
  • メソッドを正しく使い分けることで、API全体の可読性と信頼性が上がる

次の章では、サーバーからの応答を読み解く HTTPステータスコード を詳しく見ていきます。