HTMLやPHPで、ウェブシステムやウェブサイトのフォームを作成する時に必ずと言っていいほど理解が必要になってくるPOST送信とGET送信。
今回は、このPOST送信とGET送信の違いと、使い方について解説していきます。
できる限り簡単に解説していくつもりですので、ぜひ最後までお付き合いください。
検索した時のURLに注目
パソコンやスマートフォンで何かを調べる時、必ずと言っていいほど使うであろう検索エンジン。
Googleなどの検索エンジンは、人によっては使わない日はないくらい、当たり前のツールになっていることと思います。
今回、POST送信とGET送信を解説していく上で、まずGoogleを開いていただき、「ブログとは」と検索してみましょう。
検索結果のページが表示されると思いますが、今回、注目してほしいのは検索結果ではなく、「URL」です。

「google.com/search」の後に、やたら長いURLが続いていきます。
検索した「ブログとは」という文字列を見つけることはできますが、それ以外は枠をはみ出るほど、理解不能な長い文字列が続いていることがわかります。
これが、GET送信なんです。
やたら長い文字列で意味はわかりませんが、検索指示の内容がURLとなっているんです。
こちらが何かパソコンやスマートフォンに指示を出した時、その指示内容にURLに乗っかってくるのがGET送信というわけです。
その逆で、URLに乗っかってこないのが、POST送信ということになりますが、詳しくは後ほど、解説します。
GET送信とPOST送信を詳しく解説する前に、リクエストとレスポンスについて理解しておきましょう。
リクエストとレスポンス
皆さんはウェブサイトを見る時、何をしてパソコンやスマートフォンの画面にウェブサイトを表示させますか?
先ほどのように検索エンジンを使ったり、あるいはお気に入りに登録しておいてウェブサイトを表示させる、または直接URLを入力したり、さらにはスマートフォンであれば、2次元バーコードを読み取らせるかもしれません。
この一連の操作は、ウェブサイトが保存してあるサーバーに対し、私たちが閲覧を要求して、その結果、ウェブサイトを閲覧させてもらっているのです。
こういったサーバーに対する働きかけを「リクエスト」と言います。

私たちは、慣れ親しんだパソコンやスマートフォンで、知らず知らずのうちに、ウェブサイトを見せてもらうことをサーバーに要求(リクエスト)しているのです。
そして、その私たちの要求(リクエスト)に対して、インターネット上のサーバーが応えるわけです。
このサーバーの応えを「レスポンス」と言います。

サーバーに要求(リクエスト)し、それに対して応答(レスポンス)してもらうことで、私たちはウェブサイトを見ることができるのです。
HTTPプロトコルを理解する上で、このリクエストとレスポンスはとても重要な考え方になりますので覚えておきたいものです。
今回のテーマでもある「POST送信」と「GET送信」は、HTTPプロトコルのうち、サーバーに対して要求(リクエスト)する方法(手段)のことを指します。

GET送信とは
GET送信とは、先ほどの例でも見てきましたが要はURLに情報を載せてサーバーにウェブサイトの閲覧指示を出す送信方法のことをいいます。
具体的には、URLで「?」以降に続く文字列がサーバーにリクエストしている情報となります。
例えば、あるサーバーに重複することのない「id」番号で管理された情報データベースがあったとします。
「id」が「10」のデータを閲覧したい場合、「?」以降に続く文字列にその情報を載せてやります。
https://sample.com?id=10
実際に上のようなURLは存在しませんが、「?」以降にリクエストする内容を載せてサーバーに向けて送信するのがGET送信というわけです。
ただ、GET送信の場合、サーバーにリクエストした情報が丸見えになってしまうため、ユーザーIDやパスワード、また大量のデータを送信したい時などには適していません。
そのようなことから、GET送信はサーバーにあるデータベースの情報を参照する時や、多くの情報を分割してページに表示するページネーションを実装したウェブサイトのページ番号などに利用されることが多いです。
POST送信
URLに情報を載せてサーバーにリクエストするGET送信に対して、POST送信はURLに情報を載せずリクエストしたい情報を隠したい時に使われる送信方法になります。
サーバーにあるデータベースの情報を変更したり、新たに登録する時、またウェブサイトのフォームに入力された情報を扱う時に使われることが多いのがPOST送信です。
ウェブサイトのフォームは、資料を請求したり、何かにエントリーしたりする時に入力しますが、氏名や住所、電話番号など、大事な個人情報を入力することが多いと思います。
こういった時は、GET送信ではなく、URLに入力した情報が載ってこないPOST送信の方が適しているのです。
ウェブサイトのフォームを作成した時は、大抵、form要素のmethod属性は「POST」にしておけば間違いないでしょう。
<form action="https://sample.com/" method="POST">
~省略~
</form>
GET送信、POST送信の違いと使い方がわかったところで、時と場合によって、上手に使い分けていきたいものです。