ASP.NET WebAPIを使用してODATA準拠のAPIを構築していますか?
$ filterに結果がない場合の動作について質問がありますか?
空のコレクションを返す必要がありますか?またはHTTP404応答を送信しますか?
何かアイデア/理由はありますか?空のコレクションを返すことに偏っていますが、推奨される方法に違反しますか?
ASP.NET WebAPIを使用してODATA準拠のAPIを構築していますか?
$ filterに結果がない場合の動作について質問がありますか?
空のコレクションを返す必要がありますか?またはHTTP404応答を送信しますか?
何かアイデア/理由はありますか?空のコレクションを返すことに偏っていますが、推奨される方法に違反しますか?
特定の既知のRequest-Uri(例:/ resource / {uid})で個々のリソースを直接アドレス指定しておらず、コレクションも既知のアドレス可能なRequest-Uri(例:/ resource)である場合、404は不適切です。
空のコレクションは、APIを使用している場合に予想されるものです。
OData仕様3.0に固執する:
9.1.1。200OK応答コード
操作が正常に完了した場合、GET、PUT、MERGE、またはPATCH要求は200OKを返す場合があります。この場合、応答本文には、要求URLで指定されたエンティティまたはプロパティの値が含まれている必要があります。
9.2.1。404 Not Found Response Code
リクエストURLで指定されたエンティティまたはコレクションが存在しない場合、サービスは404NotFoundと空のレスポンスボディで応答する必要があります。
またはOData仕様4.0ではさらに正確
9.1.1応答コード200OK
リソースを作成しないリクエストは、正常に完了し、リソースの値がnullでない場合、200OKを返します。この場合、応答本文には、要求URLで指定されたリソースの値が含まれている必要があります。
9.2.1応答コード404NotFound 404 Not Foundは、リクエストURLで指定されたリソースが存在しないことを示します。応答機関は追加情報を提供してもよい[MAY]。
HTTP404を使うべきではないと思います。このコードは、存在しないリソースへの参照を示すために使用されます。
HTTPコード204(コンテンツなし)は404よりも適切な選択かもしれません。しかし、APIを使いやすくするため、空のコレクションの方が適切です。