了解获取方法覆盖

时间:2014-04-30 23:46:16

标签: asp.net-web-api

我是Web API的新手,我不了解如何过滤获取调用。

此方法返回数据库中的所有项目。

// GET: api/LogEntries
public IQueryable<LogEntry> GetLogEntries()
{
    return db.LogEntries;
}

此方法返回数据库中的特定项目。

    // GET: api/LogEntries/5
    [ResponseType(typeof(LogEntry))]
    public IHttpActionResult GetLogEntry(int id)
    {
        LogEntry logEntry = db.LogEntries.Find(id);
        if (logEntry == null)
        {
            return NotFound();
        }

        return Ok(logEntry);
    }

所以现在我想过滤返回的记录,所以我创建了这个方法,但它不起作用,因为调用了特定的item方法。我似乎错过了一个概念,希望你能指出我更清楚的理解。感谢

// GET: api/LogEntries
public IQueryable<LogEntry> GetLogEntries(string levelID)
{
    int levIdInt;
    if (Int32.TryParse(levelID, out levIdInt))
    {
        return db.LogEntries.Take(300).Where(l => (int)l.Level == levIdInt).OrderByDescending(d => d.TimeStamp);

    }

    return db.LogEntries.Where(i => i.ID < 0);

}

1 个答案:

答案 0 :(得分:1)

您需要指定该方法的路线

[Route("api/LogEntries/Level/{levelID}"]
public IQueryable<LogEntry> GetLogEntries(string levelID)
{}

有关路由的更多信息,请访问http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2