クライアントが次のURLを要求しているとします。
/user-details?user=123
/user-details
が存在しないリソースである場合、正しいステータスコードは明らかに404
になります。
ただし、/user-details
は存在するが、IDが123
のユーザーが存在しない場合:
404 Not Found
を返しましたが、経験上、それがリソースであるかどうかわからないのは混乱を招くと言われています。または、見つからなかったentity。400 Bad Request
の使用を検討しましたが、要求が技術的に正しいため、存在しないエンティティを要求するだけなので、混乱することもあります。この目的に適したHTTPステータスコードはありますか?
User-detailsリソースは、この場合は部分的なユーザーリソース情報へのユーザーエンティティへの概念的なマッピングであるため、404は問題ありません。
したがって、user-detailsのGETメソッドは、次の2つの場合と区別する責任を負いません。a)ユーザーが存在しない、b)ユーザーの詳細が存在しない。
ただし、エンドポイントを次のように書き直します。
/user/123/details
私の意見では、どちらがより表現力豊かです。
WebDavで使用されている422を試してみませんか? http://en.wikipedia.org/wiki/List_of_HTTP_status_codes を参照してください
私にとって、404ステータスも問題ありません(実際にはより適切に標準化されています)、400はあいまいすぎます。
user
パラメータは、 RFC 3986、セクション3.4 に記載されているリソース識別子の一部です。
クエリコンポーネントには、パスコンポーネント(セクション3.3)のデータとともに、URIのスキームと命名機関のスコープ内のリソースを識別するのに役立つ非階層データが含まれています
したがって、404/Not found
は完全に問題ありません。