Asp.Net Web Api のリリース バージョンを使用して API を作成しています。結果が見つからない場合は、正しい応答コード (404) を返そうとしています。
最初のバージョンの取得 (複数の列挙エラーがスローされます):
public IEnumerable<MyObjectType> Get(int id, string format)
{
var db = new DbEntities();
var result = db.pr_ApiSelectMyObjectType(store, id, format).AsEnumerable();
if (result.Any())
{
return result;
}
var response = new HttpResponseMessage(HttpStatusCode.NotFound)
{ Content = new StringContent("Unable to find any results") };
throw new HttpResponseException(response);
}
2 番目のバージョンの取得 (結果が null になることはないため、常に 200 を返します):
public IEnumerable<MyObject> Get(int id, string format)
{
var db = new DbEntities();
var result = db.pr_ApiSelectMyObjectType(store, id, format);
if (result == null)
{
var response = new HttpResponseMessage(HttpStatusCode.NoContent)
{ Content = new StringContent("Unable to find any results") };
throw new HttpResponseException(response);
}
return result.AsEnumerable();
}
結果が見つからない場合、どうすれば 404 を返すことができますか? リストを使用できることはわかっていますが、IEnumerable 型でのみ機能するカスタムの csv メディア タイプ フォーマッタがあるので、それを使い続けることをお勧めします。