문제

그래서 내 데이터 모델은 다음과 같습니다 : 저자 도서 단일 작성자가 여러 서적과 관련된 여러 서적을 가질 수 있습니다.

이 경로로 작성자를 검색 할 수 있습니다 : / 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
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top