@ray, 우수한 토론
@jgerman, 그것은 REST를 그냥 때문에, 자원 POST에서 돌에 설정해야 의미하지 않는다는 것을 잊지 마세요.
리소스의 임의 표현에 포함하기로 선택한 것은 귀하에게 달려 있습니다.
별도로 언급 한 표지의 경우는 하위 리소스 (표지)가 상호 참조 될 수있는 상위 리소스 (만화책)를 만드는 것일뿐입니다. 예를 들어 작성자, 게시자, 캐릭터 또는 카테고리에 대한 참조를 별도로 제공 할 수도 있습니다. 이러한 리소스를 별도로 만들거나 자식 리소스로 참조하는 만화책 앞에 만들 수 있습니다. 또는 상위 리소스를 만들 때 새 하위 리소스를 만들 수도 있습니다.커버의
특정 경우는 그 반대로 약간 더 커버 정말 만화를 필요로하지 점에서 복잡하고있다. 당신은 이메일 리소스로 메시지 등을 고려하는 경우
그러나, 아이 리소스와 같은 주소에서, 당신은 분명히 여전히 개별적으로 주소에서 참조 할 수 있습니다. 예를 들어, 모두 주소에서 가져 오기. 또는 이전 보낸 사람 주소로 새 메시지를 만듭니다. 이메일이 REST 인 경우/수신 메일, 임시 보관 메일,/보낸 사람 주소,/보낸 사람 주소,/주소,/제목,/첨부 파일,/폴더 등 많은 상호 참조 리소스를 사용할 수 있음을 쉽게 알 수 있습니다. ,/태그,/카테고리,/레이블 등.
이 튜토리얼은 상호 참조 자원의 좋은 예를 제공합니다. http://www.peej.co.uk/articles/restfully-delicious.html
이것은 자동으로 생성 된 데이터를위한 가장 일반적인 패턴이다. 예를 들어 새 자원에 대한 URI, ID 또는 작성 날짜는 서버에서 생성하므로 게시하지 마십시오. 그리고 새 리소스를 다시 얻으면 URI, ID 또는 생성 날짜를 검색 할 수 있습니다.
이진 데이터의 귀하의 경우 예. 예를 들어 이진 데이터를 하위 리소스로 게시하려고합니다. 상위 리소스를 얻으면 해당 하위 리소스를 동일한 이진 데이터 또는 이진 데이터를 나타내는 URI로 나타낼 수 있습니다.
양식 & 매개 변수는 이미 자원의 HTML 표현 다릅니다. 바이너리/파일 매개 변수를 게시하면 URL이됩니다.
새 리소스 (/ comic-books/new)의 양식을 가져 오거나 리소스 편집 양식 (/ comic-books/0/edit)을 얻으면 양식 별 표현을 요구하는 것입니다 자원의 컨텐츠 유형이 "application/x-www-form-urlencoded"또는 "multipart/form-data"인 자원 콜렉션에 게시하는 경우, 서버에 해당 유형 표현을 저장하도록 요청할 것입니다. 서버는 저장된 HTML 표현으로 응답 할 수 있습니다.
API 용도로 HTML, XML 또는 JSON 표현을 자원 콜렉션에 게시 할 수도 있습니다.
만화책 다음에 게시되는 표지를 고려하면서 설명대로 자원 및 워크 플로를 나타내지 만 만화책에는 표지가 있어야합니다. 예제는 다음과 같습니다.
- 이 지연 커버 제작을 할 수 있습니다
- 수 있습니다
- 는 커버가 교차 참조
- 여러 커버
- 는
- 초안 만화를 만들기 초안 만화를 생성 할 수 있습니다 될 수 있도록 필요한 커버 만화 제작 커버
- 초안 만화 게시
GET/만화책
=> 200 좋아, 모든 만화책을 구하십시오.
GET/만화책/0
=> 200 OK, 커버 (/ 커버/1,/커버/2)가 포함 된 만화책 (id : 0)을 가져옵니다.
GET/만화책/0/표지
=> 200 OK, 만화책 표지 (id : 0)를 받으십시오.
GET/covers
=> 200 OK, 모든 표지를 받으십시오.
GET/covers/1
=> 200 OK, 만화책 (/ 만화책/0)으로 표지 (ID : 1)를 받으십시오.
GET/만화책/신품
=> 200 OK, 만화책 (양식 : POST/draft-comic-books)을 만들기위한 양식을 얻으십시오.
POST/초안 만화 책
제목 = foo는
저자 = 야유
발행인 = 끈적 거리는
출판 = 2011-01-01
=> 302 발견 위치 :/초안 만화 책/3, 커버 (바이너리)가있는 만화책 초안 (id : 3)으로 리디렉션.
GET/draft-comic-books/3
=> 200 OK, 커버가있는 만화책 (id : 3)을 가져옵니다.
GET/draft-comic-books/3/covers
=> 200 OK, 초안 만화 (/ draft-comic-book/3)에 대한 표지를 받으십시오.
GET/초안 만화 책/3/커버/새로운
=> 200 OK, 초안 만화 책 표지를 만드는 형태를 가져옵니다 (/ 초안 만화책/3) (양식 : POST/draft- 만화책/3/표지)./초안 코믹 책/3/커버 새로 리디렉션 :
POST/초안 코믹 책/3 /은
cover_type 전면
가 cover_data = (바이너리)
=> 302 발견 위치 = 커버 만화책 초안 표지 (/ draft-comic-book/3/covers/1).
GET은/초안 만화 책/3/초안을 만화 (ID : 3) 게시 할 양식을 얻기,
=> 200 OK를 게시 (양식 : POST/출판 - 만화 - 책).
POST/출판 - 만화 책
제목 = foo는
저자는 야유
이 발행인 = 끈적 거리는
출판 = 2011-01-01
cover_type = 전면
cover_data = (진)
= > 302 발견, 위치 :/만화책/3, 표지가있는 출판 된 만화책 (id : 3)으로 리디렉션.
[RESTFUL SERVICE DISCOVERY] (http://barelyenough.org/blog/2008/01/restful-service-discovery-and-description/)를 사용합니까? – treecoder
나는 HATEAOS를 고수하려고 노력하고 있는데, 나는 내 마음 속에서 그런 것을 사용하는 것에 반대한다.하지만 나는 그것을 살펴볼 것이다. – jgerman
같은 정신으로 다른 질문입니다. 그러나 소유권은 제안 된 솔루션과 다릅니다 (문제의 하나). http://stackoverflow.com/questions/20951419/what-are-best-practices-for-rest-nested-resources – Wes