##HTTPとは
ブラウザとサーバー間で
データをやり取りするための取り決め(プロトコル)。交通ルール的な。
##このやり取りをする際に利用されるのがHTTPメッセージ
HTTPリクエストとHTTPレスポンスの2種類がある。
###HTTPリクエスト
・リクエスト行: Webサーバーに対してどのような処理を依頼するのかを伝える情報が含まれている
・メッセージヘッダー: Webブラウザとかの種類とか色々情報を伝える
・メセージボディ: Webサーバーにデータを送るために使われる。空の場合もある。
###HTTPレスポンス
・ステータス行: WebブラウザにWebサーバー内での処理の結果を伝える
・メッセージヘッダー: Webサーバーの情報色々
・メッセージボディ: HTMLや画像などのデータを格納する場所。
##HTTPメソッド
目的別に複数定義されているが、
例えばHTMLファイルなどコンテンツを取得したい場合はGETメソッド
データをWebサーバーに対して送信するときはPOSTメソッド
Webサイトを閲覧するときに利用されるのは主にこの2つです。
(PUTやDELETEもあるけど、Webサイトの改ざんができてしまうのでWebサーバー側で使用できなくしている場合がほとんどです)
#やっと本題
###GETとPOSTのちがい
GETメソッドを使ってデータを送信する場合は、URLの後ろに送りたいデータを付与して送ります。
(「URL?パラメータ名=値」という形式)
「?」パラメータのはじまり
「&」パラメータの切れ目
「=」挟んだ左側がGETの変数名、右側が渡される値
データを取得したい時に使用
データベースの書き換えが必要ない場合。
POSTメソッドを利用してデータを送信する場合は、HTTPリクエスト内のメッセージボディにデータを含めて送ります。
リクエストとして送信されるデータはメッセージボディ部に含まれる
メッセージボディは、HTTPリクエストのパラメータ内容を渡す場所。
データを変更したい時に使用
データのソート、更新、削除、新規登録などで使用する場合。
パスワードのような秘匿情報をURLに表示したくない場合。
データ量が多い場合。
バイナリデータを送信したい場合。
POST送信の場合は、URLなどの見た目では送信データはわかりません。GET送信の場合は送信できるデータ量が制限されます。URLの後ろに付与するため、ブラウザによってURLに使用できる文字数が決まっているからです。そのため、大量のデータを送信したい場合はPOST送信を利用することになります。
GETメソッドを利用してデータを送る場合、URLにデータが組み込まれるため、送ったデータがWebブラウザの閲覧履歴に残ってしまう。
POSTメソッドを利用した場合はメッセージボディ内にデータが組み込まれるため、閲覧履歴には残らない。
そのためECサイトにおいてログインする際には、機密性を考慮しPOSTメソッドが利用されます。
###ステータスコード
Webブラウザから要求されたHTMLファイルや画像といったデータを、WebサーバーはHTTPレスポンスとして応答しますが、
HTTPレスポンス内にはHTTPリクエストに対するWebサーバー内での処理結果が含まれています。それがステータスコード。
200番台は成功。正常に処理した場合に通知。
400番台はWebサーバーに存在する場合。「404 Not Found」はよく見るステータスコード。
500番台はWebサーバー側のエラー。高負荷で一時的に利用できないとか。
参考
https://qiita.com/qiita_taro/items/66f2930c5d1cc10722e7
https://liginc.co.jp/272916