201 Created
使い方
201 Created ステータスコードは、リクエストによって1つ以上の新しいリソースが作成されたときに返されます。これは一般に POST または PUT リクエストに続いて発生します。サーバーは、新しく作成されたリソースを指す Location ヘッダーを含めます。Location ヘッダーがない場合、作成されたリソースは元のリクエストで指定されたパスに存在します。
注意
特定の URI にリソースを作成する PUT リクエストも 201 Created を返します。違いは、PUT ではクライアントがターゲット URI を直接指定するのに対し、POST ではサーバーが URI を決定する点です。
仕様は 201 レスポンスでのボディを認めています。REST の慣例は、id、タイムスタンプ、URI などサーバーが割り当てたフィールドを含む、作成されたリソースの表現を返すことです。これにより、新しいリソースを取得するための追加の GET リクエストが不要になります。Location ヘッダーは新しいリソースの URI を指します。
注意
201 は、リソースが直ちに作成され Location の URI で利用可能であることを意味します。202 はリクエストが受理されたものの処理がまだ完了していないことを意味し、非同期のワークフローやキュー化されたジョブでよく使われます。
SEO への影響
Google は 201 レスポンスからのコンテンツを短時間待ち、その後受け取ったコンテンツをインデックス登録パイプラインへ渡します。インデックス登録は保証されません。
例
クライアントが /incoming/xml を宛先パスとして指定し、XML データをサーバーへアップロードします。サーバーは、データが受理され article_1.xml という名前のファイルが作成されたことを確認する応答を返します。
リクエスト
POST /incoming/xml HTTP/1.1
Host: example.com
Content-Type: application/xml
Content-Length: 105
<?xml version="1.0"?>
<article>
<title>Test XML article</title>
<author>Anonymous</author>
</article>
レスポンス
HTTP/1.1 201 Created
Location: /incoming/xml/article_1.xml
Content-Type: application/json
Content-Length: 18
{"success":"true"}
コードリファレンス
.NET
HttpStatusCode.Created
Rust
http::StatusCode::CREATED
Rails
:created
Go
http.StatusCreated
Symfony
Response::HTTP_CREATED
Python3.5+
http.HTTPStatus.CREATED
Java
java.net.HttpURLConnection.HTTP_CREATED
Apache HttpComponents Core
org.apache.hc.core5.http.HttpStatus.SC_CREATED
Angular
@angular/common/http/HttpStatusCode.Created