はじめに
現在、Ruby on Railsのプログラミングスクールに通っています。
先日、一通りカリキュラムを終わらせたのですが、まず感じたことが「あ、これRailsが書ける人になっただけだ。」でした。
コードが書けるのはもちろん大事なのですが、それだけではエンジニアにはなれなそうです。
「Railsが書けるだけの人」→「エンジニア」に近づくために今回は、HTTPメソッドの「GET」、「POST」についてわかりやすく解説していきます!
そもそもHTTPメソッドとは
私たちが「あの記事読みたい!」と思ったとき、リンクをクリックしますよね?
私たちが「よし、記事ができた!投稿だ!」というとき、「Qiitaに投稿」をクリックしますよね?
クリックしたとき、サーバーと通信が行われます。
私たち(クライアント)がサーバーと通信するときに「HTTPリクエスト」が送られます。
そのときにサーバーに要求する処理の種類がHTTPメソッドです。
主に使われるのはGET、POSTです。
他にもPUT,DELETEなどいろいろあります。
GETについて
簡単に言うとGETは**「そのページください」**って意味です。
リンクをクリックして見たいページに飛ぶときに使われます。
POSTについて
簡単に言うとPOSTは**「このデータあげます」**って意味です。
基本的にサーバーのDBにデータを保存したいときなどに使われます。
くらべてみましょう!
GETとPOST。
くらべてみたほうが理解しやすそうなので比較していきます!
○リクエストの送り方
GET・・・GET/login.html?name=test&pass=123
POST・・・POST/login.html HTTP/1.1
上記はあるサイトにログインしたときの例です。
GETを使ってデータ送信する場合、URLの後ろに送りたいデータを付与して送ります。
一方、POSTを使った場合、URLではなく、HTTPリクエスト内のメッセージボディというところにログインデータを入れて送られます。
この場合、GETを利用してログインするとURLにデータが組み込まれるため、送ったデータがブラウザの履歴に残ってしまいます。
つまり、ユーザー名やパスワードを盗み見られる可能性があります。
でもPOSTを利用してログインすれば、メッセージボディ内にデータが組み込まれるので、履歴にデータが残るということはありません。
なので、こちらからデータを入力してサーバに渡すときは機密性の高いPOSTメソッドを使います。
○ブックマーク
GET・・・できる
POST・・・できない
そもそもブックマークとは頻繁に訪れるWebページのURLを登録しておくことです。
GETにはURLにページの全てのデータがあるのでブックマークができます。
POSTはURLだけでなく、メッセージボディ内にもページのデータがあるので、ブックマークすることができません。
わかりやすく例を挙げると、
Qiitaの検索で「Rails」と検索するとします。
GETの場合、https://qiita.com/search?q=Rails
POSTの場合、https://qiita.com/search
というURLになるので、POSTのhttps://qiita.com/search
をブックマークをしても「Rails」を検索したページが表示されないということになります。
ちなみにQiitaの検索は(というか検索は基本的に)GETで通信されるので検索結果を表示したページをブックマークすることができます!
ご安心を!
○文字数制限
GET・・・2048文字
POST・・・無制限
URLに使用できる文字数が2048文字なので、データを全てURLにのせるGETは気をつけましょう。
大量のデータを送りたい場合は、POSTを使いましょう。
#参考記事
GETとPOSTの使い分け ついでにPUTとDELETE
GETとPOSTの違いについて
#最後に
この記事を書いて「普通はGET」、「保存するときはPOST」となんとなく使っていたことを反省しました笑
この「なんとなく」のところを言葉でわかりやすく説明できるように意識して記事を書いていきます!
なにか間違っているところなどあればご指摘ください!