2013-02-05 3 views
1

나는 webapp을 구현하고 있으며 RESTfull 디자인 standarts를 준수하고 싶습니다. 제 질문은.컬렉션이있는 클래스의 RESTful URL?

주어진 컬렉션이있는 클래스가 제공됩니다.

사람 { ID : 정수 이름 : 문자열 사람 의 친구 :: 수집}

는 Person 클래스의 인터페이스를 구현하는 '가장'올바른 방법이 될 것입니다 무엇 :

을 1. 사람 클래스에 몇 가지 검색 기능을 사용하여 조회 할 수있는 친구가

example.com/REST/persons -> [... {id: '2', name: 'Pete', friends: [1,4,6]} ... ] 
example.com/REST/persons/2 -> {id: '2', name: 'Pete', friends: [1,4,6]} 

은?

또는

컬렉션의 요소가 사용자 인스턴스의 필드로 조회되는 2

example.com/REST/persons -> [... {id: '2', name: 'Pete'} ... ] 
example.com/REST/persons/2 -> {id: '2', name: 'Pete'} 
example.com/REST/persons/2/friends -> [{id: '1', name: 'Joann'}, 
             {id: '4', name: 'Jim'}, 
             {id: '6', name: 'Charlie'}] 

.

나는 두 가지를 모두 구현했지만, 스탠드 아트를 준수하고 싶습니다.

태음 방법이 저에게 수술되었습니다.

example.com/REST/persons/2 -> {id  : '2', 
           name : 'Pete', 
           friends: [example.com/REST/person/1, 
             example.com/REST/person/4, 
             example.com/REST/person/6]} 

따라서 인터페이스 이벤트가 더 RESTfull이됩니다. 이제 클라이언트는 구현에 대해 알지 못해도 전체 인터페이스를 트래버스 할 수 있습니다.

어딘가에 입력이 있기를 바랍니다.

+0

REST API 구현을 위해 어떤 기술을 사용할 계획입니까? 그 선택은 당신을위한이 결정을 내릴 수 있습니다. –

+0

또한 질문 제목은 오해의 소지가 있습니다. 실제 구현보다는 URL 형식을 찾는 것처럼 보입니다. – Zepplock

+0

@Zepplock : 제목을 바 꾸었습니다. –

답변

1

example.com/REST/persons/{person-id}/friends/{friends-id}을 갖는 것이 올바른 접근 방법입니다. REST 자체는 URL 작성 규칙을 적용하지 않지만 대부분의 사람들이 수행합니다.

기본적으로 리소스가 많고 많음 관계가있는 Person 및 보조 리소스 Friend이 있습니다.

+0

친구, 친구는 어떨까요? 매우 부정하고 긴 인터페이스를 만들지 않습니까? –

+0

잘 생각해 보면이 URL을 통해 관계를 쉽게 볼 수 있다는 것입니다. 각'''사람''을 위해 당신은 친구의 명부를 얻을 수있다. 두 가지 수준 이상의 리소스를 연결할 필요가 없습니다. – Zepplock

+0

다른 누군가가 올바른 방법으로 URL의 목록을 상위 개체에 게재 할 수 있다고 말했습니다 ...따라서 좀 더 RESTfull에 액세스 할 수 있습니다. –