HTTPリクエストメソッドの使い方
※本記事はPHP学習の備忘録目的です。筆者は初学者ゆえ、誤りなどございましたらご指摘いただけますと幸いです。
HTTPリクエストメソッドとは
ブラウザ(クライアント)からWebサーバに対してしてほしいことを依頼するための手段
HTTPメソッドには「GET,POST,PUT,DELETE」などがある
どのHTTPメソッドが使われているかはデベロッパーツールの「Network」パネルから確認できる。
各メソッドの使い方
1.GETメソッド
データを取得するときに使用されるメソッド
WebブラウザにURLを入力してページを表示するときには常に「GET」メソッドが使用される。
条件を指定して検索する場合にはURLパラメータとして条件を指定する
https://example.com/search.php?
の「?」
以降の部分に検索用パラメータを設定する
例えばGoogle検索ボックスで「http get」と検索した場合のURLは以下のようになっています
フォームでの実装例(PHP)
<form action="sample.php" method="GET">
<div>
ID:<input type="text" name="id">
</div>
<div>
PW:<input type="password" name="pw">
</div>
<div>
<input type="submit" value="送信">
</div>
</form>
※formタグのmethod属性は省略した場合「GETメソッド」になる
リクエストを受け取った側での処理例
<div>
<?php echo $_GET['id']; ?>
</div>
<div>
<?php echo $_GET['pw']; ?>
</div>
→スーパーグローバルの「$_GET」でリクエスト送信時のname属性を指定して参照する
→送信ボタンを押すと上記のように入力内容が表示されます
ちなみにこのときのURLは?以降にパラメータが格納されています
このようにURLにリクエスト情報が保持されているので別のタブでこのURLを打ち込んでも同様のページが表示されます。
2.POSTメソッド
クライアント(ブラウザ)からサーバにデータを送信したいときに使用するメソッド
(記事の新規投稿、フォームの送信など)
POSTメソッドはGETメソッドとは異なり、リクエスト内容(パラメータ)をHTTP通信のbody部に含めることで、URLにその内容が表れない通信方式。
代わりに、リクエストボディ内に内容が含まれているため、URLを直接入力するだけでは同じ通信を再現することはできません。
先ほどのGETメソッドのサンプルコードで
method="POST"
スーパーグローバル変数を$_POSTに変更してフォームを送信してみます。
デベロッパーツールからフォームデータを確認するとidとpwがペイロード(本体)に格納されていることが分かります。
GETメソッドとは異なり、URLにはパラメータは含まれていません
GETメソッドとPOSTメソッドの使い分け
GETメソッドでは、送信内容がURLパラメータに含まれているため、同じURLに再度アクセスすると同じ内容が再現できる。
一方、POSTメソッドでは送信内容はURLからはわからないため同じページにURLでアクセスすることはできません。
ですので、フォーム入力中などに再読み込みした場合、入力内容が失われてしまうなどの事象が発生します。
(ユーザー登録作業とかでよく起こりますよね!!)
GETメソッドではURLに送信内容を含めることができるので、Googleにインデックスさせたいページや他からのアクセスでも同様のページを表示させたい場合に使用します。
一方、POSTメソッドはURLに送信内容を含めない点を活かして個人情報やパスワードの入力時に使用します。
以上で今回のまとめは終了しますが、もう少し理解が深まったり使い方が分かってきたら追記しようと思います!