我目前正在开发一个Web API,并且我正在弄清楚如何在我的控制器 FilmsController 中添加一个新方法,该方法必须执行LINQ查询,只需返回相关内容JSON给用户。一切似乎都是正确的,但是当我尝试调用该API时,会出现错误404。我尝试调用的API是 api / NewFilms ,这应该是正确的。
FilmsController 中的 GetNewFilms 方法:
public IQueryable<Film> GetNewFilms()
{
var query = from f in db.Films
orderby f.ReleaseYear descending
select f;
return query;
}
// GET: api/Films
public IQueryable<Film> GetFilms()
{
return db.Films;
}
答案 0 :(得分:1)
使用默认路由配置,web api控制器只允许一个GET操作(没有任何参数)。如果您有多个GET操作,则会收到500错误消息,如
找到了与请求匹配的多项操作
如果您需要有多个GET操作,则可以为使用属性路由的人明确定义路由模式。
public class FilmsController : ApiController
{
[Route("api/Films/NewFilms")]
public IEnumerable<string> GetNewFilms()
{
return new List<string> { "New Film 1","New Film 1"};
}
// GET: api/Films
public IEnumerable<string> GetFilms()
{
return new List<string> { "Film 1","Film 2"};
}
public string GetFilm(int id)
{
return "A single film";
}
}
此外,您可以考虑将退货类型从Dto的IQueryable
更改为IEnumerable
(而不是您的ORM创建的实体类)