🐥

[自己学習]HTTPリクエストとは

2025/01/17に公開

✒️記事を書いた理由

ブラウザが「ユーザー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の世界、奥深い……。

あと、他の方の記事を見て、絵文字を見出しに追加するとカラフルで見やすいなと思い、参考にさせていただきました。記事を書くのも楽しくなりますね!


📚参考文献

https://shukapin.com/infographicIT/http
https://wa3.i-3-i.info/word1841.html
https://wa3.i-3-i.info/word1844.html
https://qiita.com/c-shiraga/items/d45338a8c1ba6d0bada4

Discussion