所以我的数据模型有这样的东西:Author.Books 单个作者可以拥有多个与之关联的图书。
我可以使用以下路线检索作者:/ api / Authors / 4 ...我可以获得所有书籍的列表:/ api / Books,或者像/ api / Books / 8这样的单书
那么我如何获得一位作者的所有书籍?类似于:/作者/ 4 /书籍 我不知道启用该示例的“/ Books”部分需要做些什么。我是否修改了BooksController(以及如何)?还是AuthorsController?或者......?
答案 0 :(得分:2)
您应该认真考虑使用网络Api的强大Odata翻译功能。它允许您直接在查询字符串中构建富查询,这些查询将转换为Linq表达式。这就是我解决问题的方法。
首先,确保您的图书模型具有AuthorId属性:
public class Book
{
public string Title{get; set;}
public int AuthorId{get; set;}
}
接下来,创建一个books控制器并公开返回IQueryable的Get方法:
public class BooksController : ApiController
{
public IQueryable<Books> Get()
{
var books = new List
{
new Book{Title = "Book 1", AuthorId = 1},
new Book{Title = "Book 2", AuthorId = 2},
};
return books.AsQueryable();
}
}
最后,要查询特定作者的书籍,您的URI将如下:
/books?$filter=AuthorId eq 2