この用語をシェア
HTTPとは
HTTP(HyperText Transfer Protocol)は、WebブラウザとWebサーバー間で情報をやり取りするためのプロトコルです。World Wide Web(WWW)の基盤となる技術であり、WebページやAPIの通信に使用されます。
主要な特徴
- ステートレス:各リクエストが独立しており、前のリクエストの状態を保持しません
- テキストベース:人間が読める形式でメッセージが構成されています
- リクエスト・レスポンス型:クライアントからの要求に対してサーバーが応答します
- コネクションレス:通信後は接続を切断します(HTTP/1.1では持続的接続も可能)
HTTPメソッド
メソッド | 目的 | 説明 |
---|---|---|
GET | データの取得 | リソースの取得、冪等性あり |
POST | データの送信 | 新しいリソースの作成 |
PUT | データの更新 | リソースの置き換え、冪等性あり |
DELETE | データの削除 | リソースの削除、冪等性あり |
PATCH | 部分的な更新 | リソースの一部を更新 |
HEAD | ヘッダーの取得 | レスポンスヘッダーのみ取得 |
HTTPステータスコード
分類 | 範囲 | 代表例 | 説明 |
---|---|---|---|
情報レスポンス | 1xx | 100 Continue | リクエストの継続処理 |
成功レスポンス | 2xx | 200 OK, 201 Created | リクエストが正常に処理された |
リダイレクト | 3xx | 301 Moved Permanently | 追加のアクションが必要 |
クライアントエラー | 4xx | 400 Bad Request, 404 Not Found | クライアント側のエラー |
サーバーエラー | 5xx | 500 Internal Server Error | サーバー側のエラー |
HTTPヘッダー
よく使用されるリクエストヘッダー
- Content-Type:送信データの形式を指定
- Authorization:認証情報を含む
- User-Agent:クライアントソフトウェアの情報
- Accept:受け入れ可能なレスポンス形式
- Cache-Control:キャッシュ制御
よく使用されるレスポンスヘッダー
- Content-Type:レスポンスデータの形式
- Content-Length:レスポンスデータのサイズ
- Set-Cookie:クッキーの設定
- Location:リダイレクト先のURL
- Access-Control-Allow-Origin:CORS設定
HTTPリクエストの例
GET /api/users/123 HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Accept: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
HTTPレスポンスの例
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 156
Cache-Control: no-cache
{
"id": 123,
"name": "田中太郎",
"email": "tanaka@example.com",
"created_at": "2025-01-01T00:00:00Z"
}
HTTPのバージョン
HTTP/1.1
- 持続的接続(Keep-Alive)
- パイプライン化
- チャンク転送エンコーディング
HTTP/2
- バイナリプロトコル
- 多重化(Multiplexing)
- サーバープッシュ
- ヘッダー圧縮
HTTP/3
- QUIC(Quick UDP Internet Connections)ベース
- 接続の高速化
- パケットロス耐性の向上
セキュリティ
HTTPS
HTTPSはHTTP over SSL/TLSの略で、HTTPの通信をSSL/TLSで暗号化した安全な通信プロトコルです。
主要なセキュリティ機能
- 暗号化:通信内容の保護
- 認証:サーバーの正当性確認
- 改ざん検知:データの完全性保証
実装例
JavaScript(Fetch API)
// GET リクエスト
fetch('/api/users/123')
.then(response => response.json())
.then(data => console.log(data));
// POST リクエスト
fetch('/api/users', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + token
},
body: JSON.stringify({
name: '田中太郎',
email: 'tanaka@example.com'
})
})
.then(response => response.json())
.then(data => console.log(data));
Node.js(Express)
const express = require('express');
const app = express();
app.use(express.json());
// GET エンドポイント
app.get('/api/users/:id', (req, res) => {
const userId = req.params.id;
// ユーザー情報を取得
res.json({ id: userId, name: '田中太郎' });
});
// POST エンドポイント
app.post('/api/users', (req, res) => {
const { name, email } = req.body;
// ユーザーを作成
res.status(201).json({ id: 123, name, email });
});
app.listen(3000, () => {
console.log('Server running on port 3000');
});
HTTPの利点
- シンプルさ:理解しやすい構造
- 拡張性:新しい機能の追加が容易
- 汎用性:様々なアプリケーションに対応
- 標準化:RFC仕様として標準化
関連技術
- REST API:RESTful Webサービスでの HTTP活用
- GraphQL:HTTPベースのクエリ言語
- WebSocket:HTTP上でのリアルタイム通信
- OAuth:HTTP認証プロトコル
- CORS:クロスオリジンリソース共有