이 내용은 반복되어 논의되었으며, 지금까지 내가 어디까지 왔는지에 대한 광범위한 연구를 수행했지만 최종 장애물을 극복 할 수는 없다고 생각합니다. .자원 콜렉션에 Atom을 사용할 때 REST API 버전 관리
우리 응용 프로그램에 대한 사용자 정의 REST API를 설계하고 있으며 미디어 유형을 사용하여 버전을 사용하고자한다고 결정했습니다. application/vnd.mycompany.resource.v2 + xml. 나는이 모델의 프로와 사기범을 깨닫고 가장 유연하게 무게를다는 것 같습니다.
=== REQUEST ===>
GET /workspaces/123/contacts?firstName=Neil&accessID=789264×tamp=1317611 HTTP/1.1
Accept: application/vnd.mycompany.contact-v2+xml
<== RESPONSE ===
HTTP/1.1 200 OK
Content-Type: application/vnd.mycompany.contact-v2+xml
<contact>
<name>Neil Armstrong</name>
<mobile>+61456838435</mobile>
<email>[email protected]</email>
</contact>
문제는 내가 아톰 내 자원 콜렉션을 나타내는 피드 져야 할 엔트리 사용하고자하는 것입니다 다음과 같이
따라서 내 GET이 보일 것이다. 이렇게하면 내 리소스 나 API 구조에 감염되지 않고 Atom의 검색과 페이지 매김을 활용할 수 있습니다. 자원의 내 컬렉션을 대표하는 아톰을 사용하여
=== REQUEST ===>
GET /workspaces/123/contacts HTTP/1.1
Accept: application/atom+xml; type=feed;
<== RESPONSE ===
HTTP/1.1 200 OK
Content-Type: application/atom+xml; type=feed;
<feed xmlns="http://www.w3.org/2005/Atom">
<title>Contacts Feed</title>
<link rel="self" href="https://api.mycompany.com/workspaces/contacts"/>
<updated>2011-11-13T18:30:02Z</updated>
...
<entry>
<title>Neil Armstrong</title>
...
<content type="application/vnd.mycompany.contact-v2+xml">
<contact>
<name>Neil Armstrong</name>
<mobile>+61456838435</mobile>
<email>[email protected]</email>
</contact>
</content>
</entry>
</feed>
, 나는 미디어 유형을 사용하여 버전으로 능력을 상실 : 내 요청에 아톰을 사용하는 경우
는 내 요청 구조는 지금처럼 보인다. 미디어 유형이 이제 Atom 항목의 내용에 숨겨 짐에 따라
<content type="application/vnd.mycompany.contact-v2+xml">
여전히 자원 수집 관리를위한 아톰의 힘을 사용하는 동안, 내 자원의 미디어 타입 버전을 결정하는 가장 좋은 방법은 무엇입니까?
내 생각에 ACCEPT 헤더를 통해 전달할 수 있습니다.
Accept: application/atom+xml; type=feed; version=1.0
하지만 Atom 피드의 버전 1.0을 요구하고로 다음이 혼란은없는 자원 자체가 ...
은 어떤 도움이 정말 감사하겠습니다!
매우 자세한 답변을 보내 주셔서 감사합니다. 이 사용 사례에서 버전 관리를 사용할 수있는 확실한 방법은없는 것 같습니다. URI (/ v1/작업 영역)를 오염 시키거나 요청 매개 변수 (? version = 1.0)를 오염 시키거나 내 미디어 유형 (application/vnd.mycompany.resource.v1-xml)을 버전으로 오염시킵니다. 이 API의 일정과 환경이 설계되어야한다고 생각하면 방향을 선택하고이를 고수해야합니다. 나는 Atom 피드/엔트리를 사용하여 콜렉션을 표현하는 것이 좋은 생각이며, 이것을 버전있는 미디어 유형과 결합하고, 선택을 위해 버전 매개 변수를 사용한다고 생각한다. –