HTTP 201 Created

作成に対する成功レスポンス: 新しいリソースが存在するようになり、その場所は Location に示されます。

HTTP 201 の意味

HTTP 201 Created は、リクエスト(ほとんどの場合 POST または PUT)によってサーバー上に新しいリソースが正常に作成されたときに返されます。REST API はこれを使って、「何か新しいものが今存在する」ことを、汎用的な成功を示す 200 と区別します。

適切な 201 レスポンスには、新しく作成されたリソースの URL を示す Location ヘッダーが含まれ、多くの場合、作成されたオブジェクトをボディにそのまま含めることで、クライアントが追加の GET を行わなくても済むようにします。

201 レスポンスのよくある原因

  • POST リクエストがレコード、ファイル、またはアカウントを作成しました。
  • PUT リクエストが、クライアントが指定した正確な URL にリソースを作成しました。
  • バッチエンドポイントが、1 つの主要なリソースの作成を同期的に完了しました。

開発者向けの推奨プラクティス

  • Location ヘッダーを新しいリソースの正規 URL に設定してください。
  • サーバー割り当ての ID を含む、作成されたオブジェクトの表現をボディに含め、クライアントの往復通信を省いてください。
  • 作成がキューに入れられただけで完了していない場合は、代わりに 202 Accepted を返してください。
  • 同一の POST が繰り返されて重複が作成されていませんか?冪等性キー(idempotency key)の導入を検討し、再送に対しては 200/409 で応答してください。

レスポンス例

HTTP/1.1 201 Created
Location: /api/users/1024
Content-Type: application/json

{"id":1024,"name":"New user"}

よくある質問

200 と 201 の違いは何ですか?

どちらも成功を意味しますが、201 は特に新しいリソースが作成されたことをクライアントに伝えます。200 はリクエストが処理されたことを意味するだけです。

201 で Location ヘッダーは必須ですか?

強く推奨されます。新しく作成されたリソースの URL を示すことで、クライアントがそれを取得したりリンクしたりできるようになります。

API はどのようなときに 201 ではなく 202 を返すべきですか?

作成が非同期に行われる場合です — 202 はリクエストが受理されたが、リソースはまだ存在しないことを意味します。