22
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

「GETメソッド」と「POSTメソッド」の意味と違い

Last updated at Posted at 2022-08-11

HTMLでプログラミングする時、初めてformタグを使ったら、ある疑問が出て来ました。
formタグのactionは「GET」メソッドと「POST」メソッドどちらを使った方が良いのか、という疑問が頭に浮かんだことはないでしょうか。
その疑問に答えるため、今回は「GETメソッド」と「POSTメソッド」の意味と違いについて説明します。

目次

  1. HTTPリクエスト
  2. GETメソッド
  3. POSTメソッド
  4. GETメソッドとPOSTメソッドの違い
  5. GETメソッドとPOSTメソッドの使いタイミング

HTTPリクエスト

GETとPOSTは、どちらもHTTPのリクエストメソッドです。
では、HTTPのリクエストとはなんでしょうか。

擷取1.PNG
「HTTPリクエスト」とググって大体はこんなイメージが出てくると思いますが、少し分かりにくいかもしれません。では、擬人化をしましょう!
擷取2.PNG
左側は大目という人(ユーザー)です。右側はサーバーという人です。
二人は会話しています。
大目さんはサーバーさんに一つお願いがあります。
そして、「サーバーさん、OOページを開いて!」と大目さんが言いました。
擷取3.PNG
サーバーさんは大目さんのお願いを聞くと、OOページを準備して、大目に送ります。
「大目さん、こちらはOOページです。どうぞ!」とサーバーさんが大目さんに返事しました。

以上の会話の流れは、HTTPのリクエストとレスポンスです。
話を戻して、GETとPOSTどちらの簡単な定義もHTTPのリクエストです。
これから、詳しく説明します。

GETメソッド

GETという英語の意味は、「取得する」や「受け取る」などです。
HTTPでのGETの意味と上の英語の意味は大体同じです。
ただ、HTTPでのGETは、Webサーバーにリクエストをして、Webサーバーからのレスポンスで欲しいものを受け取るという意味です。
もっと、詳しく説明すると、GETメソッドの仕組みは「ユーザーのお願いは、HTTPのGETメソッドを通して、お願いの内容がURLにくっつけて、Webサーバーに送ります」という意味です。

ポケモンで例えると、GETメソッドはポケモンでの「モンスターボールでポケモンの名前(お願い)を貼って、ポケモンゲットする」みたいです。
擷取.PNG
例えば、ピカチュウをゲットしたい時、まずモンスターボールの上でピカチュウという名前のシールを貼って、ポケモンにモンスターボールを投げてゲットするというイメージです。

ここのポイントは、「お願いの内容がURLにくっつけて」(名前のシールを貼って)ということです。
そうすると、URLの上でGETの内容(お願い)が見えます

以下はGoogle検索の例です。
圖片1.png
ポケモンとをググると、上のURLのところは「search?q=ポケモン」という文があります。
この意味は「ポケモンを検索しました」です。

POSTメソッド

ここのPOSTの英語の意味は、「届ける」や「送る」などです。
HTTPでのPOSTは、Webサーバーにリクエストを送るという意味です。
手紙を届けると例えると、ユーザーはPOSTメソッドを通して手紙の中でお願いを書いて、封筒に入れて締めて、Webサーバーに送るというイメージです。
ポイントは、書いた内容は封筒に入れて締めるということです。
だから、外側からはユーザーのお願いは見えません。
では、POSTメソッドはどこにありますか。
答えはHTTPのBodyの中です。
だから、URLの上でPOSTの内容(お願い)が見えません

例えば、Qiitaのログイン画面
圖片2.png
ここのPOSTメソッドは「Log in to Qiita」というボタンに付いています。
IDとパスワードを入力して、「Log in to Qiita」というボタンを押すと以下の反応が出てきます。
圖片3.png
URLのところを見てください。
さっき入力したIDとパスワードの内容はURLで見えません。

GETメソッドとPOSTメソッドの違い

  • URLでリクエストした内容は見えるかどうか
    GET メソッドはURLでリクエストした内容が 見えます
    POST メソッドは 見えません

GETメソッドとPOSTメソッドの使うタイミング

GETとPOSTの基本的な機能は大体同じだから、どちらを使ってもいいです。
しかし、違いはURLでリクエストの内容が見えるかどうかということです。
この違いはとても重要です。
例えば、ログインする時、もしログインとのリクエストボタンはGETメソッドを使うと、ユーザーのパスワードは見えるになってしまいます。そして、パスワードを漏洩してしまうかもしれません。
だから、ログインのリクエストボタンは必ずPOSTメソッドを使います。

「そう言うと、セキュリティーのため全部POSTメソッドを使っていいじゃん!
GETメソッドはいりませんね!」とは言えません。

URLでリクエストを見られる点にもメリットがあります。
例えば、検索したページをお気に入りをしたい時は、そのページのURLを保存する必要です。
そのため、検索した内容(リクエストの内容)は必ずURLで書かなければなりません。
だから、基本的に検索ボタンはGETメソッドを使います。

  • まとめ

    1. GETを使うタイミング

      • URLでリクエストした内容を表示したい時
      • お気に入りをしたい時
      • 再読み込みの必要がある時
      • SEOを作りたい時(クロールを行いたい時)
        例)検索ボタン
    2. POSTを使うタイミング

      • URLでリクエストした内容を見せたくない時
      • 個人情報に関すること
      • セキュリティー性を高める時
        例)ログインやパスワードがある場合
    • 注意!
      URLの長さは限界があります。
      そのため、リクエストの内容は長い場合は、POST文を使った方がいいです。
      理由はGETメソッドをつかうと、リクエストの内容はURLにくっつけるからです
      POSTメソッドの長さにも限界はありますが、POSTメソッドの長さの限界はURLのより長いです。

参考した資料

  1. 「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典, 「GETメソッド」と「POSTメソッド」の違い
  2. SEO研究所サクラサクラボ, GETメソッドとPOSTメソッドの違いとSEO面からの使い分け
  3. ITを分かりやすく解説, HTTP GETとPOSTの違い
22
14
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?