はじめに
本記事を読んでほしい方
HTTPメソッドにおけるGETメソッド、POSTメソッドが理解できていない人、またそれぞれの違いを明確に区別できていない人に向けて記事を書きました。
目次
- HTTPメソッドについて
- GETメソッドとPOSTメソッド
- GETとPOSTの違い
このように分けて説明していきます!
1. HTTPメソッド
まず、HTTPにおけるやりとりにはHTTPリクエストとHTTPレスポンスがあります。
- HTTPリクエスト
WebブラウザがWebサーバーに対してどのような処理をして欲しいのかというリクエスト情報を伝えること。 - HTTPレスポンス
WebサーバーがWebブラウザから受け取ったHTTPリクエストを処理して、その結果をレスポンスとして応答すること。
HTTPメソッドとは、前者のHTTPリクエストを使ってWebサーバーに具体的な要求を伝える手法のことです。要は、何をしたいのか指示出しをすることですね。
このHTTPメソッドの中で、Webサイトを閲覧するために主に使用されるのがGETメソッドとPOSTメソッドです。以下で説明していきます。
2. GETメソッドとPOSTメソッド
- GETメソッド
Webサーバから情報を取り出す(GETする)ために使用されます。
例)HTMLファイルの取得など - POSTメソッド
Webサーバーへ情報を送る(POSTする)ために使用されます。
例)Webアプリへのログイン(ユーザー情報の送信)など
GETは何かを受け取るときに、POSTは何かを送るときに使用されます。
では、なぜ区別をしているのでしょうか?以下で説明していきます。
3. GETとPOSTの違い
GETメソッドとPOSTメソッドではデータの送信方法が異なります。GETメソッドを使ってデータを送信する場合は、URLの後ろに送りたいデータを付けて送ります。そのため、送ったデータがWebブラウザの閲覧履歴に残ってしまいます。一方、POSTメソッドを使ってデータを送信する場合は、HTTPリクエスト内のメッセージボディ内にデータを格納して送ります。メッセージボディ内にデータが組み込まれるため、閲覧履歴には残りません。
Webアプリにユーザ名とパスワードを入力してログインする場合
- GETメソッド : URLの末尾にユーザー情報が含めて送信してしまう
リクエストライン GET/login.html?name=aaa$pass=123 - POSTメソッド : ユーザー情報をメッセージボディに格納して送信できる
リクエストライン POST/login.html HTTP/1.1
メッセージボディ name=aaa$pass=123
以上がGETとPOSTの大きな違いとなっています。他にも、パラメータの長さなどに違いがあります。簡単に表でまとめておきます。
GETリクエスト | POSTリクエスト | |
---|---|---|
パラメータの格納場所 | URL | メッセージボディ |
セキュリティ | 低い(Webサーバーにログが残る) | 高い(Webサーバーにログが残らない) |
パラメータ(URL)の長さ | 文字列の制限あり | 文字列の制限なし |
参考文献
最後に
HTTPメソッドにおけるGETメソッド、POSTメソッドについてお分かりいただけたでしょうか?もし、不備があればご指摘いただけるとありがたく思います。最後まで読んでいただきありがとうございました!