Web API方法:返回IHttpActionResult或IQueryable

时间:2016-05-13 19:15:41

标签: asp.net-web-api

我看到大多数关于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);
        }
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:4)

要么是正确的。 IQueryable的便利之处在于您可以查询它。

例如:您可以将OData与WebAPI一起使用,其中需要一些灵活性。然后,您可以像mysite.com/odata/Orders?$filter=OrderID eq 1156那样发出AJAX请求。

以下是有关OData的更多信息:http://www.odata.org/

对于具有分页支持的动态搜索API,它被证明非常方便。