2014-11-10 3 views
1

나는 하이퍼 미디어를 참조하는 this answer을 보았습니다. 제 질문은 비슷합니다.REST API 및 지연로드 객체

휴대 기기에서 주로 소비하는 REST API를 작성 중입니다. 이런 이유로 효율적인 네트워크 I/O를 처리하려고합니다.

예를 들어 내가 TableOfContents를 (컬렉션) 속성을 포함하는 객체를 말해봐. 내 앱에서 모든 책의 목록을 사용자에게 표시하려고합니다. 그런 다음 사용자가 책을 선택하면 목차를 보여주고 싶습니다.

이제 목록 목록을 요청할 때 목록보기 항목에 아무 것도 표시되지 않기 때문에 제목과 미리보기 이미지에만 관심이 있습니다. 책이 선택 될 때만 다른 항목을 내리고 싶습니다. 대부분의 도서가 선택되는 것은 아니기 때문입니다. 등등 .. 게으른 적재 방법에

몇 가지 가능한 솔루션 :

  • 두 개체 유형 되세요. 서적 및 도서. 북 라이트에는 제목과 미리보기 이미지 만 있습니다. 책에는 모든 것이 있습니다. 이것은 게으른 로딩이 아니며 쓰레기 접근법처럼 보입니다.
  • 요청에 어떤 필드가 필요한지에 대한 쿼리가 있고 다른 필드를 반환하지 않는 한 Rest API가 모든 필드를 반환하는 하나의 개체입니다. 그런 다음 개체가 선택되고 전체 개체가 필요하면 나머지 필드에 대해 새 쿼리가 만들어집니다. 또는 전체 개체를 새로 고치려면 쿼리를 비워 두십시오.

어떤 생각이?

답변

0

필자는 결국이 공통적 인 문제에 가장 적합한 해결책을 발견했습니다.

내 REST API를 통해 전달되는 각 엔터티에 대해 사용자 지정 ViewModels 및 InputModels를 사용합니다. 또한 유용 할 수 있으므로 각 엔티티에 대한 DTO를 유지할 것입니다.

질문에서 책보기로 계속하십시오. BookSummaryViewModel을 만들 것입니다. 이 개체에는 제목 및 미리보기 이미지 등의 항목 만 포함됩니다. CountReviews와 같은 다른 필드도 추가 할 수 있습니다. CountReviews는 ViewModel이 책을 요약하는 컨텍스트를 가지고 있기 때문에 여기서 작동합니다. 실제 책을 정확하게 표현하는 것은 BookDTO에 적합하지 않습니다.

필자는 AutoMapper를 사용하여 내 ViewModels에 매핑하고 잘 작동합니다.

개요입니다. 중대한 기사를 위해 이것을 명중하십시오 link.