2014-12-01 4 views
0

한 가지 방법은 리소스 URL을 간단하게 유지해야한다고 말합니다. 우리는 HTTP의 동사와 경로로서의 자원 이름을 가지고 있습니다.REST 디자인 : 리소스 동사 또는 관련 컬렉션?

GET /books/12 

을 우리가 관련 수집을 가져하려는 경우, 우리가 할 수 있습니다 : 그래서 우리가 가질 수있는

GET /books/12/pages 

을 다른 한편으로는, 소위 자원 동사를 사용하는 관행이있다 여기서 동사 연산을 미세 조정할 수 있습니다.

POST /books/12/bookmark 

내 API에는 두 가지 방법을 사용하지 않습니다.

POST /book-bookmarks/12/ 

또는 다른 ID :

POST /bookmarks/12+book/ 
나는 첫 번째 방법은 (자원 이름을 사용할 수있는 즉, 어떤 동사) 더 정확한 없다고 생각하고, 같은 우리가 다른 개체를 사용할 수있는 두 번째 방법을 모델링하는 경향이

이 질문에 대한 답변이 없지만 어느 것이 좋습니다. 나는이 같은 디자인 결정을 실제로 거친 사람들의 답변을보고 싶습니다.

답변

0

URI (또는 IRI)는 리소스를 식별하는 데 대해 standard입니다. 이러한 자원은 웹 문서, 실제 사물 등일 수 있습니다. 현재의 경우 웹 문서입니다. Afaik. URI 구조에 대해서는 표준이 없지만 HTTP 표준과 URI 표준은 절차 적 방법으로 URI 및 HTTP 메서드를 사용해야 함을 제안합니다. 따라서 HTTP 동사는 프로 시저를 설명하고 URI는 프로 시저의 개체를 식별합니다. 이제는 일반적으로 동사와 함께 프로 시저를 설명하고 일반적으로 명사로 개체를 설명합니다. 그렇기 때문에 적어도 URI 구조의 명사 (계층 적 경로) 부분에서만 명사를 사용하는 것이 논리적 인 이유입니다.

(일반적으로 표준 HTTP 메소드와 적절한 명사로 모든 ​​것을 해결할 수 있습니다. 아주 특별한 경우에만 문제가 발생할 수 있습니다. 이러한 경우에는 동사를 URI에 넣는 것보다 새로운 HTTP 메소드를 사용하는 것이 더 좋습니다. 예를 들어, URI에서 POST와 동사를 사용하는 또 다른 대체 방법입니다.

관련 문제