2013-06-06 3 views
2

나는 REST의 통일 된 인터페이스라는 개념으로 어려움을 겪고있다. 풍부한 데이터 쿼리를 제한하지 않습니까? 예를 들어, 내가이 영화의 실체를 가정 해 봅시다 :REST의 유니폼 인터페이스

Movie 
====== 
id 
directorId 
categoryId 

나 다음과 같은 방법과 DAO를 구축하는 것이 필터로 foregin 키를 사용하여, 드문되지 않을 것 :

MovieRepo.GetByDirector(int directoryId); 
MovieRepo.GetByCategory(int category); 

나의 이해부터 내가 디렉토리 또는 RESTful 웹 서비스를 카테고리별로 내 쿼리를 필터링하고 싶다면

IEnumerable<Movie> Get(); 
Movie Get(int id) 

는, 운이 I 오전 : 균일 한 인터페이스로, 두 사람은() 메소드 나에게 사용할 수있는 가져 오기를 다음 ?

IEnumerable<Movie> GetByCategory(int categoryId); 

분명히 내 데이터베이스에서 모든 영화를 검색하고 클라이언트 측 필터를 적용하지 않을 것을 선호합니다. 내가 놓친 게 있니? 아니면 RPC 호출을 사용해야합니까?

감사합니다,

크리스

답변

2

다음과 같이 자원에 대한 URL을 매핑 할 수 있습니다 :

with GET 
/movies/{movie_id} 
/movies/{movie_id}/directors/{director_id}/ 
/movies/{movie_id}/categories/{category_id}/ 

다음 각 URL에 대해 원하는대로 메서드를 호출.

지금
/movies?director=ridley&category=sci-fi 

그냥 쿼리 매개 변수를 사용하여 영화 컨트롤러를 사용해야합니다 : 당신이 다음과 같이 URL을 사용할 수있는 알고리즘의 접근 방식과 같은보다 필터를 사용하려는 또는 경우

MovieRepo.GetByDirector(int directoryId); # in director controller 
MovieRepo.GetByCategory(int category); # in category controller 
MovieRepo.GetById(int movie_id); # in movie controller 

.