1. ホーム
  2. rest

[解決済み】有効なリクエストでありながら、データが空の場合の適切なRESTレスポンスコードは何ですか?

2022-03-24 07:18:34

質問

たとえば、次のような GET リクエストを実行します。 users/9 が、id #9 のユーザは存在しない。 最適なレスポンスコードはどれでしょうか?

  • 200 OK
  • 202 受け入れられました
  • 204 コンテンツなし
  • 400不正なリクエスト
  • 404 Not Found

解決方法

TL;DR:使用する 404

参照 このブログ . とてもよくわかると思います。

のブログのコメントまとめ 204 :

  1. 204 No Content は、ブラウザのレスポンスコードとしてはあまり有用ではありません (HTTP 仕様によれば、ブラウザはこれを「ビューを変更しない」というレスポンスコードとして理解する必要があるようです)。
  2. 204 No Content しかし、ajax ウェブサービスでは、何かを返すことなく成功を示すことができるので、非常に便利です。(特に DELETE または POST のように、フィードバックを必要としないもの)。

従って、ご質問の答えは 404 を、あなたの場合は 204 は特殊なレスポンスコードであり、ブラウザが GET .

よりもさらに適切でない他のレスポンスコードもあります。 204404 :

  1. 200 は、取得に成功したものの本体と一緒に返される必要があります。 取得したエンティティが存在しない場合は適切ではありません。
  2. 202 は、サーバーがオブジェクトの処理を開始したものの、まだ完全に準備ができていない場合に使用します。 確かに、今回のケースとは違います。 に応答してユーザ9の構築を開始していませんし、今後も開始することはないでしょう。 GET というリクエストがあります。 それは様々な規則を破ることになります。
  3. 400 は、不適切な形式の HTTP リクエスト (たとえば不正な HTTP ヘッダや不適切な順序のセグメントなど) に対応するために使用されます。これは、使用しているフレームワークによってほぼ確実に処理されます。自分でサーバーを一から書き直すのでなければ、このような処理は必要ないでしょう。 編集 : 新しいRFC は、意味的に無効なリクエストに400を使用することができるようになりました。

ウィキペディアの HTTPステータスコードの説明 が特に参考になります。 また、定義も見ることができます。 HTTP/1.1 RFC2616 ドキュメント www.w3.org に記載されています。