HTTPとは?リクエスト・レスポンスとメソッドの仕組み

30秒でわかる答え

HTTPは、Webで「お願い」と「返事」をやり取りするためのルールです。たとえばページを見るとき、スマホやパソコンが「このページをください」と頼み、相手のコンピューターがページのデータや「見つかりません」という返事を送ります。

HTTPのリクエストとレスポンスを、身近なページで考える

ブラウザが「このページをください」と頼み、サーバーが結果やデータを返す。そのやり取りのルールがHTTPです。まず、ラボで説明書を借りる場面から見てみましょう。

説明書がない。それも返事? 全3ページ

紙ひこうきを作りたいイトが、マコトに説明書を頼みます。欲しい資料が見つかるときと、見つからないときでは、返事はどう変わるでしょう。

画像を押すと拡大できます。+/−で大きさを変え、拡大中はドラッグして読めます。

1 / 3何を見たいか、伝える

ラボで紙ひこうきを作りたいイト。マコトに説明書を頼みます。

1ページ目:何を見たいか、伝える
欲しいものを具体的に伝えると、相手はそれに応じた資料を返せます。

1ページ目のセリフ

  • ラボの机に紙を用意したイト。「紙ひこうきの作り方、見たいな」
  • イトが棚を指して「あれ、見せて!」
  • いくつもある資料を前に、マコト。「どの作り方かな?」
  • イト。「紙ひこうきの説明書を見せて!」。マコトは図入りの説明書を渡す。「これだね。どうぞ」

2 / 3見つからない、も返事

今度は輪っかのひこうきの説明書が欲しくなりました。けれど、棚にはありません。

2ページ目:見つからない、も返事
「見つからない」と返事が来ることと、返事が来ないことは別です。

2ページ目のセリフ

  • イトは紙ひこうきと紙の帯を前に「輪っかのひこうきも作ってみたい!」
  • イトがマコトに「輪っかの説明書はある?」
  • マコトが棚を探す。「ここには、ないみたい」
  • イトは紙の帯を持って「『ない』っていう返事もあるんだね」。マコト。「何も返ってこないのとは違うね」

3 / 3Webでも、要求して応答を受け取る

棚になかった作り方をWebで見つけました。画面の裏でもやり取りが起きています。

3ページ目:Webでも、要求して応答を受け取る
ブラウザがリクエストを送り、サーバーがレスポンスを返す。このやり取りのルールがHTTPです。

3ページ目のセリフ

  • イトとマコトが、輪っかのひこうきの作り方をパソコンで見る。ピコ。「Webでも、頼んで、返事を受け取るんだ」
  • ブラウザからサーバーへ向かう矢印に「リクエスト」。ピコ。「このページをください!」
  • サーバーからブラウザへ戻る矢印に「レスポンス」。ピコ。「結果と、ページのデータが返るよ」
  • 作り方を見て、紙の輪を棒でつないだひこうきができた。イト。「頼むのと、返ってくるのは別なんだね」。ピコ。「そのやり取りのルールがHTTPだよ」

資料を頼む側がブラウザ、返す側がサーバーにあたります。実際のHTTPでは人が棚を探すのではなく、ソフトウェアが決まった形式のメッセージをやり取りします。返事に本文がない場合もあります。

HTTPの詳しい解説へ ↓

100%

拡大中はマウスや指でドラッグできます。100%では左右スワイプ・左右キーでページ送り。

ブラウザからサーバーへ送る「このページをください」などのお願いをリクエスト、サーバーから返ってくる返事をレスポンスと呼びます。返事には、ページのデータや「見つからない」といった結果が入ります。たとえばページを取得できれば200、要求された場所に情報が見つからなければ404などの番号で結果を伝えます。「見つからない」という返事が届くことと、返事自体が届かないことは違います。

ノートPCからGETの要求が届き、サーバーから200とページのデータが返るHTTPの往復
GETは「取得をお願いする種類」、200は「要求が成功したという結果」。行きと帰りで、伝えていることが違います。

いま開いているページなら、何をお願いし、何が返ってきたでしょうか。「ページを見たいと頼み、表示するためのデータを受け取った」と一往復で考えてみてください。

漫画のやり取りを、第64話「HTTPのお願い票には何が入っている?」では、画面のむこう側のお願い票としてさらに詳しく見ていきます。

HTTPが受け持つやり取り

お願いと返事そのものを先に整理するなら、リクエストとレスポンスとは が近い入口になります。

ブラウザは、ページや画像などの材料をサーバーへ頼みます。サーバーは要求に応じて、ページの構造を記したHTMLや画像データなどを返します。HTTPが決めているのは、この要求と応答の意味や形式です。電波やケーブルそのものの名前ではありません。

説明書を頼むときに「何が欲しいか」を伝えたように、HTTPにも要求を具体的に伝える項目があります。行きのメッセージと、帰りのメッセージを分けて見てみましょう。

HTTPリクエストの中身|GET・POSTなどのメソッド

リクエストは、ブラウザやアプリからサーバーに送るお願いです。

単に「ページください」と言っているだけではなく、どの場所に、どんな方法で、どんな追加情報をつけてお願いするかが含まれます。

要素役割
メソッドGET(情報の取得)やPOST(送った内容の処理)など、要求の種類
URLやパスサイト内のどの場所に用があるか
ヘッダーブラウザの情報、受け取りたい形式、Cookieなどの追加情報
本文フォーム送信内容やAPIに送るデータなど、必要な場合に入る中身

GETは情報の取得を求めるとき、POSTはフォームの送信など、送った内容を処理してもらうときに使います。POSTだから必ず新しいデータを作る、という意味ではありません。どんな処理をするかはサービスの設計によって異なります。

イトとユイが、HTTPリクエストに入る情報を部品ごとに確認している
リクエストは、どこへ何を頼むかをいくつかの情報に分けてサーバーに送ります。

ユイ

リクエストは、どこへ何を頼むかを書いた作業票なんですね

ピコ

そう。「どこへ」と「何をしてほしいか」が分かれているんだ

HTTPレスポンスの中身|200・404・500のステータスコード

レスポンスは、サーバーから返ってくる返事です。

WebページならHTMLが返ることがありますし、画像、CSS、JavaScript、JSONなどが返ることもあります。レスポンスを見るときは、本文だけでなく結果を示す情報も大切です。

要素役割
ステータスコード成功、移動、見つからない、サーバー側の失敗などを示す番号
ヘッダー返すデータの種類、キャッシュの扱い、Cookieの指示などの追加情報
本文HTML、画像データ、JSON、エラーメッセージなど

たとえば200は成功、404は求めた情報が見つからない場合など、500はサーバー側の予期しない問題を示します。404が出たからといって、あなたのパソコンが壊れたとは限りません。200も、記事の内容まで正しいと認定する番号ではありません。

ユイとマコトが、HTTPレスポンスに状態や本文が入ることを確認している
レスポンスには、返ってきた中身だけでなく、成功や失敗などの状態も含まれます。

APIとHTTPの関係

APIは、アプリやサービスがデータや機能をやり取りする窓口です。

そのAPIへのお願いを運ぶときに、HTTPが使われることがあります。たとえば、検索APIへGETで条件を送り、JSONのレスポンスを受け取る。保存APIへPOSTで内容を送り、成功や失敗の結果を受け取る。こうした流れは、HTTPのリクエストとレスポンスとして見ると整理できます。

ただし、APIという言葉は窓口や約束全体を指し、HTTPはそのやり取りを運ぶ通信ルールとして出てくることが多い言葉です。混ぜて覚えるより、次のように分けると見えやすくなります。

言葉ざっくりした役割
APIデータや機能を使うための窓口
HTTPWebでリクエストとレスポンスをやり取りする約束
JSONAPIの返事などで使われることがあるデータ形式
エンドポイントAPIの窓口を示すURL

HTTPとHTTPSの違いと注意点

HTTPはWebのやり取りの約束です。

HTTPSは、そのHTTPのやり取りをTLSで暗号化し、通信相手の確認なども含めて安全性を高めた形です。つまり、HTTPSはHTTPとまったく別の会話ではなく、HTTPの会話を守られた通路で行う、と考えると入りやすくなります。

ただし「HTTPSなら何をしても安全」という意味ではありません。偽サイトがHTTPSを使っている場合もあります。暗号化されていることだけで安心せず、ドメイン名やページの内容も確認します。違いを詳しく比べるなら HTTPとHTTPSの違い が続きです。

URLを開いたあとの順番

HTTPが出てくる位置を、Webページ表示の流れに置いてみます。

  1. ブラウザにURLを入れる
  2. DNSでドメイン名から宛先を探す
  3. 必要に応じて安全な通信路を準備する
  4. ブラウザがHTTPリクエストを送る
  5. サーバーがHTTPレスポンスを返す
  6. ブラウザがHTMLや画像などを受け取る
  7. ブラウザが受け取った材料を画面に組み立てる

この順番を知っていると、「DNSエラー」と「HTTPエラー」を分けやすくなります。DNSエラーは名前から宛先を見つける段階で止まっている可能性があります。一方、404や500のようなHTTPステータスは、サーバーから何らかの返事が来ている段階で見かけます。

一つのページでもお願いは複数ある

Webページを一つ開くとき、HTTPのお願いは一回だけとは限りません。

最初にHTMLを取りに行き、そのHTMLの中に書かれたCSS、画像、JavaScript、フォントなどを追加で取りに行くことがあります。つまり、画面で見えている一枚のページの裏側には、小さなリクエストとレスポンスが複数並んでいる場合があります。

たとえば、ページ表示では次のようなお願いが起きることがあります。

  1. HTMLをください
  2. 見た目を決めるCSSをください
  3. 画像ファイルをください
  4. 動きを作るJavaScriptをください
  5. 後から表示するデータをください
イトとマコトが、一つのページでも複数のHTTPリクエストが起きる様子を見ている
一つのページを開くだけでも、HTML、画像、CSSなどを小さなお願いとして何度も取りに行くことがあります。

この考え方を持つと、ページが遅いときに「サーバーが返事をしたか」だけでなく、「そのあと追加の材料を取りに行っていないか」「画像が重くないか」「JavaScriptの処理が重くないか」まで分けて見られます。

イト

お願いと返事の約束であって、電波やケーブルの名前じゃないんだ

ユイ

通信の道と、その上で交わすメッセージを分けて考えられます

HTTP確認ワークとクイズ

次の三つを一文でつないでみてください。

  • ブラウザ
  • リクエスト
  • サーバー

例は、「ブラウザがサーバーへリクエストを送り、サーバーがページのデータをレスポンスとして返す」です。ここに「その約束がHTTP」と足せると、説明の骨組みができます。

Q1. HTTPはWebページの見た目を決める言語ですか?

いいえ。見た目にはCSSなどが関わります。HTTPは、ブラウザやアプリとサーバーがデータをやり取りするための約束です。

Q2. HTTPのレスポンスには何が含まれますか?

ステータスコード、ヘッダー、HTMLやJSONなどの本文が含まれる場合があります。

Q3. DNSでIPアドレスがわかったら、それだけで画面表示は完了しますか?

いいえ。宛先がわかったあと、HTTPやHTTPSでサーバーへリクエストを送り、レスポンスを受け取り、さらにブラウザが画面に組み立てる流れが続きます。

この記事の情報・用語を確認する

読了目安 9分 / 更新日

TERM PRIMER

この記事で使った言葉

HTTP
Webで「このページをください」というお願いと、データや結果を伝える返事をやり取りするためのルールです。
HTTPS
HTTPの通信を暗号化して、より安全にやり取りするためのしくみです。
リクエスト
ブラウザやアプリがサーバーに送るお願いです。ページや画像をください、という合図です。
レスポンス
ページや画像を求めるお願いに対して、サーバーが返す返事です。ページのデータや「見つからない」といった結果を伝えます。
メソッド
HTTPで、取得や送信など要求の種類を表す語です。GETやPOSTがあります。
ステータスコード
要求の結果をサーバーが数字で返す合図です。200は成功、404は見つからない、500はサーバー側の問題を表します。

LAB WHITEBOARD

自分の言葉で説明してみよう

「HTTPがWebでリクエストとレスポンスをやり取りするための約束であること、メソッド・ヘッダー・ステータスコード・HTTPSとの関係を説明できるようになる。」を、いまの自分の言葉で一文にしてみてください。途中の説明でも大丈夫です。