【徹底比較】HTTPステータスコード200 OK vs 201 Created vs 204 No Content


HTTPステータスコード200 OKは、クライアントからのリクエストが正常に処理され、関連するデータがレスポンスとして送信されたことを示します。これは、WebブラウザがWebページを閲覧したり、APIからデータを取得したりする際に最も一般的な成功ステータスコードです。

ステータスコードの内訳

  • OK
    このテキストは、リクエストが**"問題なく"** 処理されたことをより具体的に説明します。
  • 200
    この数字は、"成功" を意味するステータスコードのカテゴリを示します。

発生タイミング

200 OKステータスコードは、以下のような状況で発生します。

  • クライアントがファイルをアップロードし、サーバーがアップロードが成功したことを伝える場合
  • クライアントがAPIにリクエストし、サーバーが期待通りのデータを返す場合
  • クライアントがWebページを閲覧し、サーバーが対応するHTMLファイルを返す場合

プログラミングでの利用

プログラミングにおいて、200 OKステータスコードは、様々な方法で使用されます。以下はその例です。

  • クライアント側開発
    サーバーからのレスポンスが成功したかどうかを確認するために、ステータスコードを検査します。
  • API開発
    APIエンドポイントが正常に動作し、期待通りのデータを返していることを示すために、200 OKステータスコードを返します。
  • Webサーバー
    リクエストが成功したことをクライアントに伝えるために、HTTPレスポンスヘッダーに200 OKステータスコードを設定します。
  • 200 OKステータスコード以外にも、様々なHTTPステータスコードが存在し、それぞれ異なる意味を持っています。
  • エラーが発生しても、関連する情報を含むJSONやXMLなどの形式で返される場合、200 OKステータスコードが返されることがあります。
  • 200 OKステータスコードは、リクエストが成功したことを示すのみであり、必ずしもリクエストされた内容がすべて実行されたことを意味するわけではありません。


Python

from http import HTTPStatus

def my_handler(request):
  # リクエスト処理を行う
  # ...

  if request_was_successful:
    response = make_response(data, status=HTTPStatus.OK)
  else:
    # エラー処理を行う
    # ...

  return response

JavaScript

const http = require('http');

const server = http.createServer((req, res) => {
  // リクエスト処理を行う
  // ...

  if (request_was_successful) {
    res.writeHead(200, { 'Content-Type': 'application/json' });
    res.end(JSON.stringify(data));
  } else {
    // エラー処理を行う
    // ...
  }
});

server.listen(3000);

Go

package main

import (
    "fmt"
    "net/http"
)

func myHandler(w http.ResponseWriter, r *http.Request) {
    // リクエスト処理を行う
    // ...

    if requestWasSuccessful {
        w.WriteHeader(http.StatusOK)
        fmt.Fjson(w, data)
    } else {
        // エラー処理を行う
        // ...
    }
}

func main() {
    http.HandleFunc("/", myHandler)
    http.ListenAndServe(":8080", nil)
}

C#

using System.Net;

public class MyHandler : HttpHandler
{
    public override void ProcessRequest(HttpContext context)
    {
        // リクエスト処理を行う
        // ...

        if (requestWasSuccessful)
        {
            context.Response.StatusCode = HttpStatusCode.OK;
            context.Response.ContentType = "application/json";
            context.Response.WriteJson(data);
        }
        else
        {
            // エラー処理を行う
            // ...
        }
    }
}
<?php

function myHandler($request) {
  // リクエスト処理を行う
  // ...

  if ($requestWasSuccessful) {
    header('Content-Type: application/json');
    echo json_encode($data);
    exit(200);
  } else {
    // エラー処理を行う
    // ...
  }
}


200 OKの代替となるステータスコード

以下は、200 OKの代替となるステータスコードとその意味です。

  • 206 Partial Content
    リクエストされたリソースの一部のみが返されたことを示します。
  • 204 No Content
    リクエストは成功しましたが、返すべきコンテンツが存在しないことを示します。
  • 202 Accepted
    リクエストが受け入れられ、処理が進行中であることを示します。
  • 201 Created
    新しいリソースが作成されたことを示します。

代替ステータスコードを使用する例

以下は、代替ステータスコードを使用する例です。

  • 一部のデータのみを返す場合
    206 Partial Contentステータスコードを使用します。
  • 空のデータを返す場合
    204 No Contentステータスコードを使用します。
  • リクエストが非同期で処理される場合
    202 Acceptedステータスコードを使用します。
  • 新しいリソースを作成した場合
    201 Createdステータスコードを使用します。

上記以外にも、状況に応じて様々なステータスコードを使用することができます。詳細は、HTTPステータスコードに関するドキュメントを参照してください。

  • ステータスコードの意味を理解し、状況に応じて適切に使用してください。
  • リクエストの処理結果を正確に反映するために、適切なステータスコードを選択することが重要です。
  • 200 OKは最も一般的な成功ステータスコードですが、必ずしもすべての状況で適切とは限りません。