5

ASP.NET WebAPIを使用してODATA準拠のAPIを構築していますか?

$ filterに結果がない場合の動作について質問がありますか?

空のコレクションを返す必要がありますか?またはHTTP404応答を送信しますか?

何かアイデア/理由はありますか?空のコレクションを返すことに偏っていますが、推奨される方法に違反しますか?

4

3 に答える 3

5

特定の既知のRequest-Uri(例:/ resource / {uid})で個々のリソースを直接アドレス指定しておらずコレクションも既知のアドレス可能なRequest-Uri(例:/ resource)である場合、404は不適切です。

空のコレクションは、APIを使用している場合に予想されるものです。

于 2013-01-11T08:14:30.310 に答える
2

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]。

于 2016-10-24T14:23:49.040 に答える
1

HTTP404を使うべきではないと思います。このコードは、存在しないリソースへの参照を示すために使用されます。

HTTPコード204(コンテンツなし)は404よりも適切な選択かもしれません。しかし、APIを使いやすくするため、空のコレクションの方が適切です。

于 2013-01-13T17:38:15.710 に答える