Web API方法:返回IHttpActionResult或IQueryable

Ste*_*nes 4 asp.net-web-api

我看到有关Web API方法的大多数评论都说它们应该返回IHttpActionResult。当我在Visual Studio中添加控制器并选择“带有用于实体框架的Web API 2控制器”时,它输入了这两种方法(以及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);
        }
Run Code Online (Sandbox Code Playgroud)

Sta*_*ack 5

两者都是正确的。方便之IQueryable处在于您可以查询它。

例如:您可以在需要一定灵活性的情况下将OData与WebAPI结合使用。然后,您可以像发出AJAX请求mysite.com/odata/Orders?$filter=OrderID eq 1156

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

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