リクエストメソッドとは?GET・POSTなど全種類の違いと使い分け


「GETとPOSTの違いがよくわからない」「PUTやDELETEっていつ使うの?」——Web開発やAPI連携を学び始めると、必ず出てくるのがHTTPリクエストメソッドの疑問です。
リクエストメソッドとは、WebブラウザなどのクライアントがWebサーバーに対して「データを取得してほしい」「データを送信したい」といった要求の種類を伝えるための仕組みです。私たちが日常的にWebサイトを閲覧したり、フォームに入力したりする裏側では、常にリクエストメソッドが使われています。
この記事では、リクエストメソッドの基本的な仕組みから、全8種類それぞれの役割と違い、実務での使い分け方、そしてREST APIとの関係まで、図表を交えてわかりやすく解説します。
リクエストメソッドとは?HTTP通信の基本を理解しよう
HTTPとリクエスト・レスポンスの仕組み
リクエストメソッドを理解するには、まずHTTP通信の全体像を把握しておきましょう。
HTTP(HyperText Transfer Protocol)とは、WebブラウザとWebサーバーの間でデータをやり取りするための通信ルール(プロトコル)です。たとえば、あなたがブラウザでURLを入力してページを開くとき、裏側では次のようなやり取りが行われています。
- クライアント(ブラウザ)がサーバーに「このページのデータをください」というリクエスト(要求)を送信する
- サーバーがリクエストの内容を解析し、該当するデータを探す
- サーバーがクライアントにレスポンス(応答)としてデータを返す
- ブラウザが受け取ったデータを画面に表示する
このリクエストを送る際に、「何をしてほしいか」を指定する部分がリクエストメソッド(HTTPメソッド)です。
リクエストメソッドの役割
リクエストメソッドとは、クライアントがサーバーに対して「どのような操作を要求しているか」を示す文字列です。HTTPリクエストの先頭行に記述され、「HTTP動詞」と呼ばれることもあります。
たとえば、WebページをブラウザでWebサイトを閲覧するときは「GET」というメソッドが使われ、お問い合わせフォームを送信するときは「POST」というメソッドが使われています。メソッドの種類によって、サーバーが実行する処理が変わるのです。
HTTPリクエストは、実際にはテキストデータで構成されており、以下の3つの部分から成り立っています。
HTTPリクエストの構造
①リクエストライン:メソッド、URL、HTTPバージョン(例:GET /index.html HTTP/1.1)
②ヘッダー:リクエストの補足情報(サーバー名、ブラウザの種類、データ形式など)
③ボディ:送信するデータ本体(POSTやPUTの場合に使用)
リクエストメソッド全8種類の一覧と役割
HTTP/1.1で定義されているリクエストメソッドは全部で8種類あります。まずは一覧表で全体像を把握しましょう。
メソッド | 役割 | 安全性 | べき等性 | 使用頻度 |
|---|---|---|---|---|
GET | リソースの取得 | ○ | ○ | ★★★ |
POST | リソースの新規作成・データ送信 | × | × | ★★★ |
PUT | リソースの全体更新(置き換え) | × | ○ | ★★ |
PATCH | リソースの部分更新 | × | △ | ★★ |
DELETE | リソースの削除 | × | ○ | ★★ |
HEAD | ヘッダー情報のみ取得(ボディなし) | ○ | ○ | ★ |
OPTIONS | 利用可能なメソッドの問い合わせ | ○ | ○ | ★ |
TRACE | リクエストのループバックテスト | ○ | ○ | ほぼ不使用 |
上記の「安全性」と「べき等性」は、メソッドを正しく使い分けるうえで非常に重要な概念です。後のセクションで詳しく解説します。
まずは、実務で特に重要な5つのメソッド(GET・POST・PUT・PATCH・DELETE)から見ていきましょう。
主要5メソッドを徹底解説【GET・POST・PUT・PATCH・DELETE】
GET:リソースを取得する
GETは、サーバーからデータを取得するためのメソッドです。最も使用頻度の高いメソッドであり、Webページの閲覧、画像の表示、API経由でのデータ取得など、あらゆる場面で使われています。
GETメソッドの特徴として、データの送信にはURLのクエリパラメータ(「?key=value」の形式)を使います。たとえば、ECサイトで「シャツ」を検索すると、URLが「https://example.com/search?q=シャツ」のように変わります。これがGETリクエストです。
GETの注意点:パラメータがURLに表示されるため、パスワードや個人情報などの機密データの送信には使ってはいけません。また、URLには長さの制限があるため、大量のデータ送信にも向いていません。
POST:データを送信・リソースを作成する
POSTは、サーバーにデータを送信して新しいリソースを作成するためのメソッドです。お問い合わせフォームの送信、会員登録、ファイルのアップロードなどで使われます。
GETとの最大の違いは、送信データをURLではなくリクエストボディに格納する点です。URLに情報が表示されないため、GETよりもデータの秘匿性が高く、送信できるデータ量にも実質的な制限がありません。
ただし、POSTはリクエストボディにデータを入れるだけであって、それ自体が暗号化を意味するわけではありません。通信の安全性を確保するにはHTTPS(SSL/TLS)による暗号化が必要です。
PUT:リソースを丸ごと置き換える
PUTは、指定したリソースを新しいデータで完全に置き換えるためのメソッドです。該当するリソースが存在しない場合は、新規作成を行うこともあります。
重要なのは、PUTは「全体の置き換え」であるという点です。たとえば、ユーザー情報に「名前」「メール」「年齢」の3項目があり、PUTで「年齢」だけを送信した場合、「名前」と「メール」は削除されてしまいます。リソース全体のデータを毎回送る必要があるのです。
PATCH:リソースを部分的に更新する
PATCHは、リソースの一部分だけを更新するためのメソッドです。PUTとの違いは、変更したいフィールドだけを送信すればよい点にあります。
先ほどのユーザー情報の例で言えば、PATCHで「年齢」だけを送信すると、「名前」と「メール」はそのまま保持され、年齢だけが更新されます。差分だけを送信するため、通信量も少なく効率的です。
DELETE:リソースを削除する
DELETEは、指定したリソースをサーバーから削除するためのメソッドです。削除したいリソースのURIを指定してリクエストを送信します。
DELETEは取り消しができないため、使用には注意が必要です。実際のサービスでは、物理削除ではなく「削除フラグを立てる」論理削除で実装されることも多くあります。
主要5メソッドの覚え方(CRUD対応)
- Create(作成)→ POST
- Read(読み取り)→ GET
- Update(更新)→ PUT(全体置換)/ PATCH(部分更新)
- Delete(削除)→ DELETE
GETとPOSTの違いを5つの観点で比較
リクエストメソッドのなかでも、GETとPOSTの違いは最も基本的で、最も多く質問される部分です。5つの観点で整理しておきましょう。
比較項目 | GET | POST |
|---|---|---|
主な用途 | データの取得 | データの送信・作成 |
データの送信場所 | URLのクエリパラメータ | リクエストボディ |
データの可視性 | URLに表示される | URLには表示されない |
データ量の制限 | URLの長さに依存(一般的に2,048文字程度) | 実質的に制限なし |
べき等性 | あり(何回実行しても同じ結果) | なし(実行のたびに結果が変わりうる) |
日常的な例で考えるとイメージしやすいでしょう。GETは「図書館で本を探して読む」行為に似ています。何度本を探しても、本の内容が変わることはありません。一方、POSTは「図書館に新しい本を寄贈する」行為に近く、実行するたびに蔵書が増える(状態が変わる)のです。
「安全性」と「べき等性」を理解する
リクエストメソッドを正しく使い分けるには、安全性とべき等性という2つの概念を理解することが重要です。これらはHTTPの仕様で定義されている性質であり、API設計の基盤となるものです。
安全性(Safe Methods)とは
安全性とは、そのメソッドを実行してもサーバー上のリソースの状態が変化しないという性質です。つまり、「読み取り専用」の操作であることを意味します。
安全なメソッドはGET、HEAD、OPTIONSの3つです。これらのメソッドはデータを取得するだけで、サーバー側のデータを書き換えたり削除したりしません。
逆に、POST、PUT、PATCH、DELETEは安全ではないメソッドです。これらはサーバー上のデータを変更する可能性があるため、使用する際には注意が必要です。
べき等性(Idempotent Methods)とは
べき等性とは、同じリクエストを何度実行しても、結果が1回目と変わらないという性質です。
たとえば、DELETEメソッドは一見するとべき等ではなさそうですが、「リソースが削除されている」という結果は、1回削除しても10回削除しても同じです。そのため、DELETEはべき等なメソッドとされています。
一方、POSTは「新しいリソースを作成する」ため、同じリクエストを10回送ると、10個のリソースが作られる可能性があります。よって、POSTはべき等ではありません。
安全でべき等:GET、HEAD、OPTIONS(読み取り専用。何度実行しても同じ)
べき等だが安全でない:PUT、DELETE(データは変わるが、同じ操作を繰り返しても結果は同じ)
安全でもべき等でもない:POST(実行のたびに新たなリソースが作られる可能性がある)
べき等とは限らない:PATCH(部分更新の内容次第で結果が変わることがある)
REST APIとリクエストメソッドの関係
リクエストメソッドの使い分けが特に重要になるのが、REST API(RESTful API)の設計です。REST APIは現在のWeb開発で最も広く使われているAPI設計の考え方で、HTTPメソッドを「リソースに対する操作」として体系的に活用します。
REST APIの基本ルール
REST(Representational State Transfer)の設計原則では、APIの設計を以下のように整理します。
- URLは「リソース(操作対象の名詞)」を表す(例:/users、/articles/123)
- 操作の種類は「HTTPメソッド(動詞)」で指定する
- URLに動詞を含めない
たとえば、「ユーザー管理」のAPIであれば、次のように設計します。
操作 | HTTPメソッド | URL(エンドポイント) | 説明 |
|---|---|---|---|
一覧取得 | GET | /users | 全ユーザーの一覧を取得 |
個別取得 | GET | /users/123 | ID:123のユーザー情報を取得 |
新規作成 | POST | /users | 新しいユーザーを作成 |
全体更新 | PUT | /users/123 | ID:123のユーザー情報を全体置換 |
部分更新 | PATCH | /users/123 | ID:123のユーザー情報を部分的に更新 |
削除 | DELETE | /users/123 | ID:123のユーザーを削除 |
このように、同じURL「/users/123」に対してメソッドを変えることで、異なる操作を実行できます。URLを「名詞」、メソッドを「動詞」として組み合わせることで、シンプルで直感的なAPI設計が実現できるのです。
REST APIを正しく設計するためには、各メソッドの安全性とべき等性を理解し、仕様に沿った使い分けをすることが求められます。GETでデータを変更したり、すべての操作をPOSTで処理したりすることは、RESTの原則に反し、バグやセキュリティリスクの原因になります。
よくある質問(FAQ)
Q1. HTMLのフォームではGETとPOST以外のメソッドを使えますか?
HTML5のフォーム(form要素)が対応しているのは、GETとPOSTの2種類のみです。PUT、PATCH、DELETEなどは、HTMLフォームから直接送信することはできません。これらのメソッドを使うには、JavaScriptのfetch()やXMLHttpRequest、またはフレームワークの仕組み(hidden inputで_methodを指定するなど)を利用します。
Q2. PUTとPATCHはどう使い分ければいいですか?
リソース全体を新しいデータで完全に置き換えたい場合はPUT、特定のフィールドだけを変更したい場合はPATCHを使います。実務では、部分更新の方が効率的で安全なケースが多いため、PATCHが使われる頻度が増えています。ただし、PATCHに対応していないサーバーもあるため、その場合はPOSTで代替することもあります。
Q3. べき等性があると何がうれしいのですか?
べき等なメソッドは、ネットワーク障害などでリクエストの結果が不明な場合に、安全に再送できるという大きなメリットがあります。たとえば、PUTリクエストの応答がタイムアウトした場合、もう一度同じリクエストを送っても結果は変わらないため、安心してリトライできます。一方、POSTの場合は再送するとリソースが重複作成される可能性があるため、再送には注意が必要です。
Q4. CONNECT やTRACEはどんな場面で使いますか?
CONNECTはプロキシサーバーを経由してHTTPSの通信トンネルを確立する際に使われます。TRACEはリクエストが経路上でどのように変更されるかをテストする診断用メソッドです。いずれも一般的なWeb開発で直接使う機会はほとんどなく、セキュリティ上の理由からTRACEはサーバー側で無効化されていることが大半です。
Q5. リクエストメソッドはWeb開発以外でも使われますか?
はい。HTTPリクエストメソッドは、Webサイトの閲覧だけでなく、モバイルアプリとサーバーの通信、IoTデバイスのデータ送受信、外部サービスのAPI連携など、HTTP通信を使うあらゆる場面で使われています。クラウドサービスの操作やSlack・LINE等のBot開発でも、REST APIを通じてHTTPメソッドが活用されています。
まとめ:リクエストメソッドを正しく理解し、適切に使い分けよう
HTTPリクエストメソッドは、Web開発の最も基本的な要素の一つです。この記事のポイントを振り返りましょう。
- リクエストメソッドとは、クライアントがサーバーに「どんな操作を要求するか」を伝える仕組み
- HTTP/1.1で定義されているメソッドは全8種類。特に重要なのはGET・POST・PUT・PATCH・DELETEの5つ
- GETは「データの取得」、POSTは「データの送信・新規作成」が基本的な役割
- PUTはリソース全体の置き換え、PATCHは部分的な更新、DELETEは削除に使う
- 安全性(サーバーの状態を変えない)とべき等性(何度実行しても同じ結果)がメソッド選択の判断基準
- REST APIでは「URLは名詞、メソッドは動詞」というルールでAPIを設計する
まずはGETとPOSTの違いを確実に理解し、そこからPUT・PATCH・DELETEへと知識を広げていくのがおすすめです。API開発やWeb開発を行う方は、ぜひChromeのデベロッパーツール(Networkタブ)で実際のリクエストメソッドを確認してみてください。普段何気なく使っているWebサービスの裏側が見えるようになると、理解が一気に深まります。



