@ 레이, 훌륭한 토론
@jgerman은 REST이기 때문에 POST에서 리소스를 스톤으로 설정해야한다는 것을 잊지 마십시오.
주어진 리소스 표현에 포함 시키기로 선택한 것은 귀하에게 달려 있습니다.
개별적으로 언급 된 표지의 경우는 하위 자원 (표지)이 상호 참조 될 수있는 상위 자원 (만화)을 작성하는 것입니다. 예를 들어 저자, 출판사, 캐릭터 또는 카테고리에 대한 참조를 별도로 제공 할 수도 있습니다. 이러한 리소스를 별도로 또는 만화로 만들기 전에 하위 리소스로 참조 할 수 있습니다. 또는 부모 리소스를 만들 때 새 자식 리소스를 만들 수도 있습니다.
표지의 특정 사례는 표지에 실제로 만화책이 필요하고 그 반대의 경우도 있기 때문에 약간 더 복잡합니다.
그러나 전자 메일 메시지를 리소스로, 보낸 사람 주소를 자식 리소스로 생각하는 경우에는 여전히 보낸 사람 주소를 개별적으로 참조 할 수 있습니다. 예를 들어 주소에서 모두 가져옵니다. 또는 이전 발신 주소로 새 메시지를 작성하십시오. 이메일이 REST 인 경우 / received-messages, / draft-messages, / from-addresses, / to-addresses, / addresses, / subjects, / attachments, / folders와 같이 여러 상호 참조 된 리소스를 사용할 수 있음을 쉽게 알 수 있습니다. , / tags, / categories, / labels 등
이 학습서는 상호 참조 된 자원의 좋은 예를 제공합니다.
http://www.peej.co.uk/articles/restfully-delicious.html
자동 생성 된 데이터에 가장 일반적인 패턴입니다. 예를 들어 새 리소스에 대한 URI, ID 또는 생성 날짜는 서버에서 생성하므로 게시하지 않습니다. 그러나 새 리소스를 다시 가져올 때 URI, ID 또는 생성 날짜를 검색 할 수 있습니다.
이진 데이터의 예입니다. 예를 들어 이진 데이터를 자식 리소스로 게시하려고합니다. 상위 자원을 확보하면 해당 하위 자원을 동일한 2 진 데이터 또는 2 진 데이터를 나타내는 URI로 나타낼 수 있습니다.
양식 및 매개 변수는 이미 리소스의 HTML 표현과 다릅니다. URL을 생성하는 이진 / 파일 매개 변수를 게시하는 것은 쉽지 않습니다.
새 자원 (/ comic-books / new)에 대한 양식을 얻거나 자원을 편집하기위한 양식 (/ comic-books / 0 / edit)을 받으면 양식의 자원에 대한 표현을 요구합니다. 컨텐츠 유형이 "application / x-www-form-urlencoded"또는 "multipart / form-data"인 자원 콜렉션에 게시하는 경우 서버에 해당 유형 표시를 저장하도록 요청합니다. 서버는 저장된 HTML 표현 등으로 응답 할 수 있습니다.
API 등의 목적으로 HTML, XML 또는 JSON 표현이 자원 콜렉션에 게시되도록 할 수도 있습니다.
또한 만화책 뒤에 게시 된 표지를 고려하면서 설명하면서 자원과 워크 플로우를 표현할 수 있지만, 만화책에는 표지가 있어야합니다. 예를 들면 다음과 같습니다.
- 지연된 표지 생성 허용
- 필요한 표지로 만화책 제작 가능
- 표지를 상호 참조 할 수 있습니다
- 여러 커버를 허용
- 초안 만화 만들기
- 임시 만화책 표지 작성
- 초안 만화 출판
GET / comic-books
=> 200 OK, 모든 만화책을 얻으십시오.
GET / comic-books / 0
=> 200 OK, 표지 (/ covers / 1, / covers / 2)와 함께 만화책 (id : 0)을 얻습니다.
GET / comic-books / 0 / covers
=> 200 OK, 만화책 표지를 얻습니다 (ID : 0).
GET / covers
=> 200 OK, 모든 표지를 얻습니다.
GET / covers / 1
=> 200 OK, 만화책 (/ comic-books / 0)으로 표지 (id : 1)를 얻습니다.
GET / comic-books / new
=> 200 OK, 만화책을 만들 양식을 얻습니다 (형식 : POST / draft-comic-books).
POST / draft-comic-books
title = foo
author = boo
publisher = goo
게시 = 2011-01-01
=> 302 찾은 위치 : / draft-comic-books / 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 / draft-comic-books / 3 / covers / new
=> 200 OK, 만화 초안 (/ draft-comic-book / 3)에 대한 표지를 작성하는 양식 가져 오기 (형식 : POST / draft-comic-books / 3 / 커버).
POST / draft-comic-books / 3 / covers
cover_type = front
cover_data = (binary)
=> 302 찾은 위치 : / draft-comic-books / 3 / covers, 초안 만화 용 새 표지로 리디렉션 (/ draft-comic -도서 / 3 / 표지 / 1).
GET / draft-comic-books / 3 / publish
=> 200 OK, 초안 만화책을 발행 할 양식을 얻습니다 (ID : 3) (형식 : POST / published-comic-books).
POST / published-comic-books
title = foo
author = boo
publisher = goo
publish = 2011-01-01
cover_type = front
cover_data = (binary)
=> 302 찾은 위치 : / comic-books / 3, 게시 된 만화책으로 리디렉션 덮개가있는 (id : 3).