2012-11-13 5 views
2

JAX-RS를 사용하고 있으므로 REST 스타일에 따라 웹 서비스를 만들고 있습니다. 그러나 문제는 더 일반적인 형태이므로 기술은 중요하지 않습니다.RESTful 웹 서비스, 경로 설정 방법

시스템에 세 가지 리소스가 있다고 가정 해 보겠습니다. 퀴즈, 질문 및 질문 피드백. 이제 퀴즈 리소스에 대한 경로를 생성한다고 가정 해 보겠습니다. /quiz

퀴즈 개체 하나에는 질문 목록이 있고 각 질문에는 피드백 목록이 있습니다.

또한 질문의 경로는 /questions이고 서브 리소스에 대한 답변은 POST (정확한 용어입니까?)이므로 다음과 같이 말하십시오. /question/1/feedback.

그러나이 경로는 퀴즈를 통해도 제공되어야합니까? 이것에 대한 규칙이 있습니까? 아니면 개발자에게 달려 있습니다 (당연히 ..하지만 평소입니까?).

예 : /quiz/questions/1/feedback. 제가 물어 보려고하는 것은 경계선이 어디로 가는지입니다. 중첩 된 경로에서 동일한 작업을 사용할 수 있도록해야합니까? "최상위"경로 일 때와 같은 방식으로 수행 할 수 있습니까?

+0

이것이 내 작업의 가장 좋은 예입니다. http://docs.atlassian.com/fisheye-crucible/latest/wadl/crucible.html –

+0

아마도이 질문은 질문이 분리 가능한지 여부에 달려 있습니다 퀴즈 (quizes) 또는 퀴즈 (ques) 여부에 상관없이 모든 퀴즈에있는 질문 목록이 고유하거나 일부 질문은 다른 퀴즈에 동적으로 채울 수 있습니까? – Stan

답변

4

우리는 웹 서비스 구현에서 구성 vs 집계 규칙을 활용 해 왔습니다. 합성 된 리소스는 부모 리소스로 완벽하게 관리되는 수명주기가 있다는 기본 전제가 있습니다. 보기 만의 연결 지점에서 관리 집계 된 것을 반면

그래서 부모 자원, 우리는 (일반적으로)과 같이 하위 자원에 대한 관리 작업에 HTTP 동사를 매핑 제공 :

 
      Composition  Aggregation 
POST   create   associate 
GET   read    read 
PUT   update   reassociate 
DELETE  delete   disassociate 

들어 composite GET은 서브 자원을 완전히 질의하기에 충분한 엔드 포인트를 정의합니다. 집계 된 GET의 경우 전체 쿼리를 수행 할 실제 끝점을 정의하는 데 필요한 정보 만 반환합니다. 우리는 퀴즈 API를 코딩하는 경우

솜, 우리는

  • /퀴즈/질문/1
  • /질문/것 1
  • /질문/1/피드백

하지만 아니요 :

  • /퀴즈/질문/1/의견