204 No Content
使い方
204 No Content ステータスコードは、メッセージボディが期待されない POST、PUT、DELETE の操作への応答として返されます。一部のサーバーは代わりに、空のボディと Content-Length が 0 の 200 を返します。
実際的なユースケースは、ユーザーが「保存」ボタンを押すフォーム送信の結果です。サーバーは変更をコミットし、成功をユーザーに伝えることはクライアントに任せます。
サーバーは 204 レスポンスにメッセージボディを含めてはなりません。Cache-Control や ETag といったヘッダーは引き続き送信され、リクエストが示すドキュメントに適用されます。
関連する 205 Reset Content ステータスも同様にボディを返しませんが、加えてクライアントにドキュメントビューをリセットするよう指示します(たとえば送信後にフォームをクリアするなど)。条件付き GET は、リソースを再取得する必要がないことを示すために 304 を返します。
注意
DELETE が 204 を返すのは、レスポンスボディが不要な単純なリソース削除で最も一般的なパターンです。レスポンスに確認の詳細や削除されたリソースの表現を含める場合は、代わりに 200 を返します。PUT が 204 を返すのは、更新が成功し、クライアントが更新後の表現を返してもらう必要がない場合によくあります。204 は「成功、表示するものはなし」を意味し、404 は「リソースが見つからない」を意味します。空のコレクションへのクエリは 204 ではなく、空の配列を伴う 200 を返します。
SEO への影響
コンテンツが受信されないため、Google は 204 レスポンスを処理できません。一貫して 204 を返す URL は検索結果に表示されません。
例
クライアントがジョブを定義する XML データをサーバーへ POST します。サーバーは、データが受理されジョブが完了したことを確認する応答を返します。返すべき内容がないため、204 No Content ステータスコードが適切です。
リクエスト
POST /job HTTP/1.1
Host: example.com
Content-Type: application/xml
Content-Length: 68
<?xml version="1.0"?>
<job>
<id>125</id>
<task>G01</task>
</job>
レスポンス
HTTP/1.1 204 No Content
コードリファレンス
.NET
HttpStatusCode.NoContent
Rust
http::StatusCode::NO_CONTENT
Rails
:no_content
Go
http.StatusNoContent
Symfony
Response::HTTP_NO_CONTENT
Python3.5+
http.HTTPStatus.NO_CONTENT
Java
java.net.HttpURLConnection.HTTP_NO_CONTENT
Apache HttpComponents Core
org.apache.hc.core5.http.HttpStatus.SC_NO_CONTENT
Angular
@angular/common/http/HttpStatusCode.NoContent