我正在使用 Web API,并且在创建查询以基于过滤器拉回数据方面遇到了一些困难。经典示例是基于外键拉回项目列表。
假设我有以下实体:
Movie
======
id
directorId
categoryId
使用以下方法构建 DAO 对我来说并不少见:
MovieRepo.GetByDirector(int directoryId);
MovieRepo.GetByCategory(int category);
最近,我一直在使用 Linq 和实体框架来构建可供多个调用客户端使用的检索方法,但可以根据传递给过滤器的任何条件过滤其返回的列表
public IEnumerable<Movie> Get(MovieFilter filter){
IQueryable<Movie> query = _context.tblMovie;
if(!String.IsNullOrEmpty(filter.directorId))
query.Where(m => m.directoryId == filter.directorId);
if(!String.IsNullOrEmpty(filter.categoryId))
query.Where(m => m.categoryId == filter.categoryId);
return query.ToList();
}
样板 Web API 控制器操作是:
IEnumerable<Movie> Get();
Movie Get(int id)
如果我想使用 Web API 按目录或类别过滤我的查询,我将如何以 RESTful 方式进行呢?鉴于路由得到解决的方式,以下将是一个模棱两可的调用:
IEnumerable<Movie> GetByCategory(int categoryId);
我没有看到太多关于这方面的指导,有人可以为我提供一些吗?
问候,
克里斯