2012-05-29 4 views
2

everyone =) 저는 휴식 서비스에 초보자입니다. 그래서 몇 가지 기능이 가능한지 확실하지 않습니다. 예를 들어, 항목 목록과 클라이언트 응용 프로그램을 삭제하기 전에 여러 가지 방법으로이를 필터링 할 수 있습니다. 나는 반환 형식으로 .net, linq & wcf 휴식 서비스를 사용하고 있습니다. 방법은리스트 필터링하기 :많은 조건으로 서비스 제공

.../Items/RecentOnes 
.../Items/FilteredByDate 
.../Items/ItemsWithCrashID('CrashId') 
.../Items/ItemsWithValue('Value') 

등 을 그리고 나는 그 필터가 한 쿼리에서 호출 할 필요가있다.

.../Items/ItemsWithValue('Value')/RecentOnes/FilteredByDate 

또는

.../Items/FilteredByDate/ItemsWithCrashID('CrashID')/Recent 

다른 가능한 조합들 (14) 등을들 수있다. (알다시피, 필터의 순서는 중요하지 않습니다.)

제 질문은 - 네 가지 서비스를 어떻게 든 작성하여 모든 조합을 작동시킬 수 있습니까?

이 아니면 그렇게 할 수있는 유일한 방법은 사전에

.../Items?recentOnes=true&FIlteredByDate=false&CrashID=&Value=somevalue ? 

감사합니다 =)

+0

REST를 사용할 때의 장점 중 하나는 서비스 메소드 매개 변수를 기반으로 URL의 형식을 지정하는 것입니다. 따라서 최신 형식은 "RESTful"입니다. 여러 필터를 사용하려는 경우 조건 개체를 사용하고 문자열 표현을 서비스에 전달할 수 있습니다 :'../ Items? condString = {condString}'. 조건 객체는 필터 이름, 값, 비교 연산자, 부정 및 하위 조건 목록과 같은 속성을 가질 수 있습니다. 부모 조건은 논리 연산자 ('AND','OR')를 통해 자식 조건과 연결됩니다. –

답변

2

니스 질문처럼, 4 PARAMS와 단일 서비스를 작성하는 것입니다! RESTful 웹 서비스는 자원 표현, 예컨대로 URL에 사용 된 바와 같이 :

.../items   =>    get all items 
.../items/1  =>    get an item which id == 1 
.../items/1/edit =>    edit an item which id == 1 
.../items?value='computer' =>  get all items which value == 'computer' 

그래서 당신은 당신이 해당 URL을 볼 수 있습니다

.../Items/ItemsWithValue('Value')... 

그것은 전혀 특정 리소스에 표현 아니에요. 값으로 필터링되는 일부 항목을 찾는 것처럼 보입니다. 마치 수색과 같습니다. 두 번째 선택이 더 좋으므로 필터링 할 모든 것을 쿼리 문자열로 사용하십시오.

+0

답장을 보내 주셔서 감사합니다 =) – Vital

+0

안녕하세요. :) –