MVC4 WebApi를 체인 컨트롤러로 사용하려면 어떻게해야합니까?
-
29-10-2019 - |
문제
그래서 내 데이터 모델은 다음과 같습니다 : 저자 도서 단일 작성자가 여러 서적과 관련된 여러 서적을 가질 수 있습니다.
이 경로로 작성자를 검색 할 수 있습니다 : / API / authors / 4 ... 나는 다음과 같은 모든 서적을 얻을 수 있습니다 : / api / books 또는 / api / books / 8 와 같은 단 하나의 책을 얻을 수 있습니다.
그래서 어떤 책을 모든 책을 얻을 수 있습니까?뭔가 : / 저자 / 4 / 책 이 예제의 "/ Books"부분을 활성화하는 데 필요한 것이 무엇인지 모르겠습니다.BookScontroller (및 방법)를 수정합니까?또는 AuthorsController?또는 ...?
해결책
Web API의 강력한 Odata 번역 기능을 사용하여 심각하게 고려해야합니다.LINQ 표현식으로 변환되는 QueryString에서 직접 풍부한 쿼리를 구축 할 수 있습니다.이것은 내가 당신의 문제를 해결하는 방법입니다.
먼저 책 모델에 저자 속성이 있는지 확인하십시오.
public class Book
{
public string Title{get; set;}
public int AuthorId{get; set;}
}
.
다음에 책 컨트롤러를 만들고 iQuelyable을 반환하는 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
. 제휴하지 않습니다 StackOverflow