我看到大多数关于Web API方法的评论说他们应该返回IHttpActionResult。当我在Visual Studio中添加一个Controller并选择“Web API 2 Controller with Action For Entity Framework”时,它输入了这两个方法(以及POST,PUT和DELETE)。它使用IQueryable返回多个记录而不是IHttpActionResult。哪个是正确的,为什么?
// GET: api/Trades
public IQueryable<Trade> GetTrades()
{
return db.Trades;
}
// GET: api/Trades/5
[ResponseType(typeof(Trade))]
public IHttpActionResult GetTrade(int id)
{
Trade trade = db.Trades.Find(id);
if (trade == null)
{
return NotFound();
}
return Ok(trade);
}
要么是正确的。 IQueryable
的便利是你可以查询它。
例如:您可以将OData与WebAPI一起使用,这需要一些灵活性。然后,您可以像mysite.com/odata/Orders?$filter=OrderID eq 1156
一样制作AJAX请求。
这里有更多关于OData:http://www.odata.org/
事实证明,对于具有分页支持的动态搜索API,它非常方便。