Yanonoblog!

こつこつと

リクエストとレスポンス

はじめに

本記事では「Webを支える技術」で学んだ内容と別途気になって調べた内容や知識も含めアウトプットしています。

書籍に記載されている内容を順序立ててまとめるというよりは、整理しておきたい周辺の知識と深ぼった内容を雑多に書いています。

リクエストとレスポンス

リクエストとレスポンスは、クライアント(ウェブブラウザなど)とサーバー間で情報をやりとりする基本的な方法です。

通常、クライアントからサーバーへの通信は「リクエスト」、サーバーからクライアントへの通信は「レスポンス」と呼ばれます。

リクエス

リクエストはクライアントがサーバーにデータを要求するためのメッセージです。

HTTPリクエストは以下の部分から構成されます

  1. メソッド(または動詞): これはクライアントが行いたい操作の種類を定義します。例えば GET、POST、PUT、DELETE など。
  2. URL(Uniform Resource Locator): これはリソース(データ)の場所を示します。
  3. ヘッダー: これはメタデータ(データに関するデータ)を提供します。例えば、リクエストの内容の種類(Content-Type)、認証情報(Authorization)など。
  4. ボディ: POST や PUT メソッドの場合、リクエストにはボディ(実際に送信するデータ)が含まれます。

レスポンス

レスポンスはサーバーがクライアントにデータを返すためのメッセージです。

HTTP レスポンスは以下の部分から構成されます:

  1. ステータスコード: これはサーバーのレスポンスのステータスを示します。例えば 200 は成功、404 はリソースが見つからない、500 はサーバー内部エラーなど。
  2. ヘッダー: これもメタデータを提供します。例えば、レスポンスの内容の種類(Content-Type)、セットするクッキー(Set-Cookie)など。
  3. ボディ: これはサーバーがクライアントに返すデータ(例えば、HTML ページ、JSON データなど)です。

ブラウザでの確認方法

ウェブブラウザ(ChromeFirefox など)の開発者ツールを使用して、リクエストとレスポンスを観察できます。

  1. ブラウザを開いて、任意のウェブページを表示します。
  2. ブラウザのメニューから「検証」を開きます( Mac では Cmd + Opt + I キーを押すことで開けます)。
  3. 開発者ツールの中にある「Network」タブをクリックします。
  4. ページをリロードすると、「Network」タブにリクエストのリストが表示されます。
  5. 各リクエストをクリックすると、詳細パネルが表示され、そのリクエストと対応するレスポンスの詳細を見ることができます。

具体的なリクエストとレスポンスの詳細(URL、ヘッダー、ボディ、ステータスコードなど)を確認できます。

image

クライアントで行われること

ウェブブラウザ(クライアント)がサーバーに情報を要求するリクエストを送信し、レスポンスを受信するときは 以下のプロセスが順に実行されます。

  1. リクエストメッセージの構築 クライアントはサーバーに送信するリクエストメッセージを構築します。 このメッセージには何を要求しているのか(例:あるURLのウェブページを見たい)などの情報が含まれます。
  2. リクエストメッセージの送信 クライアントはこのリクエストメッセージをサーバーに送信します。
  3. レスポンスが返るまで待機 サーバーからのレスポンスが返ってくるまで、クライアントは待機状態に入ります。
  4. レスポンスメッセージの受信 サーバーからレスポンスメッセージが返ってくると、クライアントはこれを受信します。
  5. レスポンスメッセージの解析 クライアントはレスポンスメッセージを解析し、その内容を理解します。
  6. クライアントの目的を達成するために必要な処理 最後に、レスポンスメッセージに基づいて、必要な処理(例:ウェブページの表示)を実行します。

レスポンスメッセージを解析した結果、再度リクエストが必要になることもあります。

たとえば、ウェブページには画像やスタイルシートなどのリソースへのリンクが含まれており、それらを正しく表示するためには、ブラウザは各リソースに対して別々のリクエストを発行する必要があります。

このように、1つのウェブページを完全に表示するためには、50回以上のリクエストが必要になることもあります。

サーバーで行われること

サーバーは以下のプロセスを順に実行します。

  1. リクエストの待機 サーバーは常にクライアントからのリクエストを待っています。
  2. リクエストメッセージの受信 クライアントからのリクエストメッセージをサーバーが受信します。
  3. リクエストメッセージの解析 サーバーはリクエストメッセージを解析して、何が要求されているのかを理解します。 この場合、クライアントが http://gihyo.jp のトップページの表示を要求していることを把握します。
  4. 適切なアプリケーションプログラムへの処理の委譲 サーバーはトップページのHTMLを生成するためのアプリケーションプログラムに処理を委譲します。 このプログラムはデータベースから最新の記事を取得したり、広告のリンクを生成したりする可能性があります。
  5. アプリケーションプログラムから結果を取得 サーバーはアプリケーションプログラムから生成されたHTMLを取得します。
  6. レスポンスメッセージの構築 サーバーは取得したHTMLに適切なヘッダーを追加し、レスポンスメッセージを構築します。
  7. レスポンスメッセージの送信 最後に、サーバーはレスポンスメッセージをクライアントに送信します。これにより、クライアント(ブラウザ)に表示するトップページのHTMLが提供されます。

参考

おしまい

コメント

本記事の内容は以上になります!

書籍の続きのアウトプットも随時更新したいと思います。


プログラミングスクールのご紹介 (卒業生より)

お世話になったプログラミングスクールであるRUNTEQです♪

https://runteq.jp/r/ohtFwbjW

こちらのリンクを経由すると1万円引きになります。

RUNTEQを通じて開発学習の末、受託開発企業をご紹介いただき、現在も双方とご縁があります。

もし、興味がありましたらお気軽にコメントか、TwitterのDMでお声掛けください。

https://twitter.com/outputky