新しいリソースが作成されました。
使いどころ
何かを作成する 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 / Express | res.status(201).end() |
|---|---|
| Python / Flask | return '', 201 |
| nginx | return 201; |
確認方法
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/