HTTPの基礎
このドキュメントの目的
HTTP(Hypertext Transfer Protocol) の基礎を理解し、OAuth 2.0/OIDCを学ぶ土台を作ることが目標です。
HTTPとは
HTTP(Hypertext Transfer Protocol):
- Web上でデータをやり取りするための通信プロトコル
- クライアント(ブラウザ、アプリ)とサーバー間の通信ルール
- リクエスト・レスポンス型(クライアントが要求、サーバーが応答)
HTTP通信の全体像
┌──────────────────┐ ┌──────────────────┐
│ │ │ │
│ クライアント │ │ サーバー │
│ (ブラウザ、 │ │ (Web API) │
│ モバイルアプリ) │ │ │
│ │ │ │
│ 1. リクエスト作成│ │ │
│ ↓ │ │ │
│ ┌────────────┐ │ │ │
│ │GET /users │ │──2. HTTPリクエスト→│ 3. リクエスト受信│
│ │Host: api...│ │ │ ↓ │
│ └────────────┘ │ │ 4. 処理実行 │
│ │ │ ↓ │
│ 6. レスポンス受信│ │ 5. レスポンス作成│
│ ↓ │ │ ↓ │
│ ┌────────────┐ │ │ ┌────────────┐ │
│ │200 OK │ │←─HTTPレスポンス─── │ │200 OK │ │
│ │{user data} │ │ │ │{user data} │ │
│ └────────────┘ │ │ └────────────┘ │
│ ↓ │ │ │
│ 7. データ利用 │ │ │
│ │ │ │
└──────────────────┘ └──────────────────┘
特徴:
- ステートレス: サーバーは前回のリクエストを覚えていない
- 1回のやり取り: 1リクエスト → 1レスポンス
- クライアント主導: クライアントがリクエストを開始
HTTPリクエスト・レスポンスの基本
リクエストの構造
GET /users/123 HTTP/1.1
Host: api.example.com
Authorization: Bearer eyJ...
Content-Type: application/json
{リクエストボディ(POSTの場合)}
4つの要素:
- リクエストライン: メソッド、パス、HTTPバージョン
- ヘッダー: メタ情報(Host、Authorization等)
- 空行: ヘッダーとボディの区切り
- ボディ: 送信データ(オプション)