201 Created

新しいリソースが作成されました。

使いどころ

何かを作成する POST の後。作成したものを指す Location ヘッダーを含めます。

知っておきたいこと

新しいリソースの URL を Location ヘッダーで送り、クライアントが必要とするならその表現をボディで返しましょう。追加の GET が不要になります。Location は相対 URL でもよく、クライアントはリクエスト URL を基準に解決します。201 はリダイレクトではないので、HTTP クライアントは Location をたどりません。ヘッダーは自分のコードで読み取る必要があります。

作成処理を再試行しても安全にしましょう。タイムアウトしたクライアントは POST を再送することが多く、重複が作成されます。Stripe のように Idempotency-Key ヘッダーを受け付けるか、クライアントが生成した ID に PUT させ、繰り返しのリクエストには元のレスポンスを返します。バックグラウンドジョブの完了後にしかリソースが存在しない場合は代わりに 202 を、一意の値が既に使われている場合は 409 を使います。

成功 (2xx)

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

レスポンスでの表示

HTTP/1.1 201 Created

返し方

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

確認方法

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

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