[自己学習]HTTPリクエストとは
✒️記事を書いた理由
ブラウザが「ユーザーIDが1のデータを見たい!(http://???.com/users/1)」というリクエストを送る。
昨日書いた記事の上記部分で、「GET http… とちゃんとしたHTTPリクエストの形で書くといいよ」と先輩エンジニアに教えていただきました。
「HTTPリクエスト」ってルーティングで出てきたよな…くらいの知識だったので、調べてみます。
❓HTTPリクエスト
ホームページを見るとき、ブラウザからWebサーバへのお願い。
そういえば、「HTTPリクエスト」はデプロイを勉強した時も出てきたので、その時の流れに組み込むと…
- まず、ブラウザからWebサーバにデータを表示したもらうようお願いする。(HTTPリクエスト=リクエスト)
- Webサーバは必要なファイルを探し、ブラウザにファイルを返す。(レスポンス)
- ブラウザがWebサーバから受け取った内容を画面上に表示し、我々が表示されたページを見ることができる。
このWebサーバとブラウザのやり取りの通信規則(プロトコル)を「HTTP」と呼ぶ。
「リクエスト」も「レスポンス」もメッセージがある。
「HTTPリクエスト(レスポンス)メッセージ」またはまとめて「HTTPメッセージ」と呼ぶ。
この「HTTPメッセージ」はどちらも三構造で、スタートライン、ヘッダ、ボディがある。
「HTTPリクエストメッセージ」のスタートライン部分が「HTTPリクエストライン」と呼ばれ、
**[HTTPリクエストメソッド] [パス] [プロトコルバージョン]**の順で書く。
今回書いた記事だとこんな感じ。
GET /users/2 HTTP/1.1
# [HTTPリクエストメソッド] GET
# [パス] /users/2。リクエストのURLパス。
# [プロトコルバージョン] HTTP/1.1。使用するHTTPのバージョンのこと。
こういう風に専門的に書いたら?というのが、先輩からのアドバイス。
❓ルーティングとの関係性
ルーティングでも「HTTPリクエスト」と出てくる。
ルーティングでは、下記の形式で書く。
GET "/users/2" => "users#show"
これは、下記クライアントのリクエストをRailsアプリケーションが受け取って
ルーティング設定を確認している。
GET /users/2 HTTP/1.1
Host: example.com
ルーティングの設定によって、URL「…/users/2」がUsersController の show アクションに紐づけられる。
↓
該当のコントローラとアクションが呼び出される。
🐥余談
そういえば、「HTTPリクエスト」はデプロイを勉強した時も出てきたので、その時の流れに組み込むと…
- まず、ブラウザからWebサーバ(今回出てきたのは、Nginx[エンジンエックス])にHTTPリクエストを送る。
- Nginxは静的な処理しかできない。Nginxはアプリケーションサーバ(今回出てきたのは、Puma)に動的処理をリクエストする。
- PumaがRailsアプリケーションを動作させる。
- Railsアプリケーションがデータベースとやり取りして、Pumaに返す。
- Webサーバ(Nginx)がブラウザに返す。
- 我々が表示されたページを見ることができる。
🐥調べたことを経て
こうやって勉強すると、我々がクリック1つで表示されたブラウザは
たくさんの処理がされて表示されてるということがわかる。
ITの世界、奥深い……。
あと、他の方の記事を見て、絵文字を見出しに追加するとカラフルで見やすいなと思い、参考にさせていただきました。記事を書くのも楽しくなりますね!
📚参考文献
Discussion