Web API 方法:返回 IHttpActionResult 还是 IQueryable

4

我看到大多数关于 Web API 方法的评论都说它们应该返回 IHttpActionResult。当我在 Visual Studio 中添加控制器并选择 "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);
        }

1个回答

5
任意一种都是正确的。使用 IQueryable 的方便之处在于,您可以查询它。
例如:您可以在需要一定灵活性的情况下,使用 WebAPI 进行 OData 查询。然后,您可以像这样进行 AJAX 请求:mysite.com/odata/Orders?$filter=OrderID eq 1156
更多关于 OData 的信息,请参见:http://www.odata.org/ 它被证明非常方便,用于具有分页支持的动态搜索 API。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接