Kodokon kodokon.com

HTTPをそのまま読む:メソッドとステータスコード

本物のリクエストとレスポンスを読み、200、404、500が実際に何を意味するのかを学びましょう。

8 分 · 3 問

このレッスンを Kodokon で開く

HTTP(HyperText Transfer Protocol)は、ブラウザとサーバーがお互いに話すときの言葉です。よい知らせがあります。これは意味不明なバイナリではなく、読めるテキストです。リクエストは数行に収まります。動詞、アドレス、それに続いて文脈を補うヘッダー(どの言語を好むか、どのブラウザを使っているか)です。レスポンスも同じ形をしています。数字のコード、ヘッダー、空行、そして中身です。

BASH
curl -i https://example.com

HTTP/2 200
content-type: text/html; charset=UTF-8
content-length: 1256
cache-control: max-age=86400

<!doctype html>
<html>
...
-i オプションを付けると、curlは中身だけでなくレスポンスのヘッダーも表示します。

リクエストの先頭に置かれる動詞をメソッドと呼び、これがあなたの意図を宣言します。GET は単にリソースを読みたいという要求です。ページを開くたびにブラウザがしているのがこれです。POST はサーバーにデータを送ります。会員登録フォームを送信するときが典型例です。PUT は既存の項目を更新し、DELETE はその削除を求めます。まずは最初の2つを覚えましょう。通信の圧倒的多数がこの2つです。

BASH
curl -X POST -d "name=Sarah&age=30" https://httpbin.org/post
POSTリクエストの例。-d には、フォームが送るのと同じように、送信するデータを指定します。

すべてのレスポンスは3桁のステータスコードから始まります。最初の1桁を見るだけで状況がわかります。2xxは成功を意味し、200 は「求められたものはこれです」ということです。3xxはリダイレクトで、301 は「このページは引っ越しました、あちらへどうぞ」という意味です。4xxクライアント側の誤りを示します。404(リソースが見つからない)、403(アクセス禁止)、401(ログインが必要)です。5xxサーバー側の不具合を示し、500 が典型的な内部エラーです。

BASH
curl -I https://example.com/this-page-does-not-exist

HTTP/2 404
content-type: text/html; charset=UTF-8
-I オプション(大文字のアイ)はヘッダーだけを要求します。ステータスコードを確認するのに最適です。

理解度チェック

このレッスンの要点をしっかり覚えているか確認しましょう。

  1. ステータスコード404は何を意味しますか?
    • サーバーが停止した
    • 要求されたリソースがそのアドレスに見つからない
    • リクエストが成功した
  2. サーバー側の問題を知らせるのは、どの仲間のコードですか?
    • 2xx
    • 3xx
    • 4xx
    • 5xx
  3. ブラウザが単にページを読むときに使うHTTPメソッドはどれですか?
    • GET
    • POST
    • DELETE