コンテンツ

    サーバー応答 204 No Content

    HTTP ステータスコード 204 (No Content) の理解

    HTTP ステータスコード 204 は、ウェブ開発において重要な役割を果たします。このコードは、リクエストが正常に処理されたことをサーバーがクライアントに通知し、しかし応答に送信するデータがないことを示します。このコードの正しい使用法、実践的な例、誤用のケースとその修正方法について説明します。

    204 - No Content

    ステータスコード 204 の特性

    • 定義: ステータスコード 204 は、リクエストが正常に完了したが、返すデータが存在しないことを示します。
    • 使用時期: データが不要な場合、特にリソースの削除や更新後に使用されます。
    • 他のステータスコードとの違い:
      • 200 OK: データが正常に返される場合に使用されます。
      • 204 No Content: データが返されない場合に使用されます。

    ステータスコード 204 の実践的な使用例

    例 1: データなしでのリクエストの成功

    シナリオ: リソースの削除

    fetch('/api/resource/1', {
        method: 'DELETE'
    })
    .then(response => {
        if (response.status === 204) {
            console.log('リソースが削除されました。');
        }
    });

    例 2: コンテンツなしでのデータ更新

    シナリオ: ユーザープロフィールの更新

    import requests
    
    response = requests.put('/api/user/profile', json={'name': '新しい名前'})
    if response.status_code == 204:
        print('プロフィールが更新されました。')

    例 3: データなしでのアクション確認

    シナリオ: ユーザーのアクション確認

    <?php
    header("HTTP/1.1 204 No Content");
    ?>

    ステータスコード 204 の使用における誤りとその修正

    一般的な誤り

    • 応答にデータを送信すること。
    • コンテンツが必要な状況での不適切な使用。

    修正方法

    JavaScript での修正例

    // 誤った例
    fetch('/api/resource', {
        method: 'POST',
        body: JSON.stringify({ data: '何か' })
    }).then(response => {
        if (response.status === 204) {
            console.log('成功');
        }
    });
    
    // 修正例
    fetch('/api/resource', {
        method: 'DELETE'
    });

    Python での修正例

    # 誤った例
    response = requests.delete('/api/resource', json={'data': '何か'})
    if response.status_code == 204:
        print('成功')
    
    # 修正例
    response = requests.delete('/api/resource')
    if response.status_code == 204:
        print('成功')

    PHP での修正例

    <?php
    // 誤った例
    header("HTTP/1.1 204 No Content");
    echo "データ"; // 不適切
    
    // 修正例
    header("HTTP/1.1 204 No Content"); // データなしでの応答
    ?>

    ステータスコード 204 の正しい使用に関するヒント

    • API 設計に関する推奨: 不要なデータを返さないように設計する。
    • テスト方法: ステータスコード 204 の送信をシミュレートし、実際にレスポンスが空であることを確認する。
    ステータスコード 説明
    200 OK リクエストが正常に処理され、データが返された。
    204 No Content リクエストが正常に処理され、返すデータがない。
    404 Not Found 要求したリソースが見つからない。