GETとPOSTの違い、説明できますか?「自動販売機」で学ぶHTTPメソッド
公開日: 2025年9月27日
Web開発を学んでいると、GET と POST という2つの言葉に頻繁に出会います。フォームの `method` 属性や、APIのドキュメントで必ず目にする、HTTPメソッドの代表格です。
「なんとなく、GETはURLにくっついて、POSTは隠れるやつでしょ?」 その理解は、半分正解です。しかし、この2つの違いは、それだけではありません。これらを正しく使い分けることは、安全で、効率的なWebアプリケーションを設計する上で、絶対に欠かせない知識なのです。
今日は、この重要な違いを、「自動販売機」の例えを使って、もう二度と忘れないように解説していきます。
GETリクエスト:ただ「ジュースを選ぶ」だけ
まず、GETメソッドは、サーバーから情報を「取得する (GET)」ことだけを目的としています。 これは、ごく普通の自動販売機で、あなたがジュースのボタンを押す行為に似ています。
- 送る情報: あなたが送る情報は「C-5の、お茶をください」という選択情報だけです。
- サーバーへの影響: ボタンを押したことで、自動販売機の中身(在庫)が減るかもしれませんが、自動販売機そのものの状態を、あなたが直接変更することはありません。
- 何度押しても同じ: 間違えて同じボタンを2回押しても、出てくるのは同じお茶が2本です。結果は予測可能です。
Webの世界では、
- ブログ記事のページを開く
- Googleで何かを検索する
- 商品の詳細ページを見る
といった、「ただ情報を見るだけ」の行為が、すべてGETリクエストにあたります。 URLに ?query=... のように情報が付くのは、自動販売機のボタンが外から見えているのと同じです。
POSTリクエスト:お金を入れて「新しい注文をする」
一方、POSTメソッドは、サーバーに情報を「投稿して (POST)」、何か新しいものを作成したり、状態を更新したりすることを目的としています。
これは、最新式のタッチパネル式の自動販売機で、あなたがお金を投入し、カスタマイズ注文をする行為に似ています。
- 送る情報: あなたは、「コーヒー、砂糖3つ、ミルク2つで」といった複雑な情報を、タッチパネル(フォーム)で自動販売機の内部に送信します。この情報は、外からは見えません。
- サーバーへの影響: あなたの注文によって、自動販売機は新しいコーヒーを一杯作り出します。これは、サーバー上で新しいデータが作成されたり、既存のデータが更新されたりする、重大な変更です。
- 何度押したら危険: もし、注文ボタンを2回押してしまったら、2杯分のコーヒーが作られ、料金も2倍かかってしまいます。結果は予測可能ではありません。
Webの世界では、
- ログインフォームを送信する
- SNSに新しい投稿をする
- ECサイトで商品を注文する
- このサイト「SerchCode Pro」で、コードの解説をリクエストする
といった、「サーバー上のデータを変更する可能性のある」行為が、すべてPOSTリクエストにあたります。 URLに情報が表示されないのは、クレジットカード情報のような、見えてはいけない大事な情報を、安全に送るためです。
まとめ:GETは「読む」、POSTは「書く」
この2つの違いを、一言でまとめるならこうなります。
- GET: サーバーのデータを読む (Read) ためだけ。安全で、何度でも実行できる。
- POST: サーバーのデータに書き込む (Create/Update) ため。サーバーの状態を変える、慎重に扱うべき操作。
Webアプリケーションを設計する際は、常に「この操作は、サーバーのデータを変更する可能性があるか?」と自問自答してみてください。 答えが「No」ならGETを、「Yes」ならPOST(または、より専門的なPUTやDELETE)を選ぶ。
この基本的な使い分けをマスターすることが、あなたが安全で信頼性の高いWebサービスを作るための、重要な一歩となるのです。
プログラミング学習に必須ツール!
記事で紹介したコードがよく分からなかったり、ご自身のコードについてもっと知りたい場合は、AIコード解説ツールが便利です。コードを貼り付けるだけで、AIが日本語で分かりやすく解説します。
AIコード解説ツールを使ってみる →