204 No Content

成功したが、返す内容はない。

使いどころ

ボディを返さない DELETE や PUT。

知っておきたいこと

204 にはボディを含めてはいけません。それでもフレームワークが JSON を書き込むと、HTTP/1.1 のクライアントやプロキシが余分なバイトを次のレスポンスの先頭として読み取り、keep-alive 接続がわかりにくい形で壊れることがあります。fetch では 204 で response.ok が true になりますが、response.json() は空のボディで例外を投げるので、パースする前にステータスが 204 かどうかを確認してください。

ブラウザーでは、204 を返すリンクやフォーム送信は現在のページをそのままにします。ページ遷移もエラーも起きません。そのため、ビーコンやトラッキング用のエンドポイントに便利です。204 は CORS プリフライトの OPTIONS リクエストに対する一般的な応答でもあります。何も見つからなかった GET には使わず、404 か、空のリストを含む 200 を返して、クライアントが両者を区別できるようにしてください。

成功 (2xx)

2xx は成功を表します。サーバーがリクエストを受け取り、理解し、受け入れました。

レスポンスでの表示

HTTP/1.1 204 No Content

返し方

Node.js / Expressres.status(204).end()
Python / Flaskreturn '', 204
nginxreturn 204;

確認方法

curl -s -o /dev/null -w "%{http_code}\n" https://example.com/

HTTP ステータスコードを開く