고객의 계정 정보를 열기 위해 RESTful API를 설계하고 있습니다. 현재 리소스와 관련된 다른 리소스에 대한 참조가 포함 된 표현이 있습니다. 이것은 공개 된 자료뿐만 아니라 공개 API에서도 찾을 수있는 여러 가지 모범 사례에서 나온 것입니다. 표현은 XML 또는 JSON 일 수 있습니다.
예를 들어 계정 리소스에 대해서는 계정 주소에 대한 참조가 있고 페이지 매김 목록 리소스에 대해서는 첫 번째, 다음 및 이전 페이지에 대한 참조가 있습니다.
API는 <link title="" rel="" href="" />
O'Reilly 책에 설명 된대로 시맨틱 링크 를 사용하여 처음 설계 되었으며 Netflix 및 Google의 API에서 사용되었습니다. QA 엔지니어가 자동화 제품군을 작성해야 할 시점이되었을 때 링크를 직렬화 해제하는 데 문제가있었습니다. 우리는 이제 페이스 북과 트위터가 API에서 사용하는 더 간단한 URI 문자열 요소를 제안했습니다.
Google의 QA 엔지니어는 deserialization 문제를 해결했지만 시맨틱 링크와 함께 현재 API 사양을 쉽게 사용할 수 있다는 우려가 있습니다. API는 주로 고객과 일부 타사 파트너가 소비하며 이전 XML-RPC API가 소비자에게 너무 어려워 REST로 전환했습니다.
tl; dr;
질문:
시맨틱 링크 표현을 구현 한 사람이 소비자 문제에 어려움을 겪었습니까?
업데이트 (6/21) : 시맨틱 링크를 유지하기로 결정하고 혼란이 최후의 사례가되기를 바랍니다. API가 일부 소비자에게 공개되면 경험에 대한 질문에 대답하는 것을 기억할 것입니다.
편집 : 예제 추가
시맨틱 계정 JSON :
{
"username": "paul",
"links": [
{
"title": "addresses",
"rel": "related",
"href": "http://example.com/account/paul/addresses"
},
{
"title": "history",
"rel": "related",
"href": "http://example.com/account/paul/history"
}
]
}
시맨틱 계정 XML :
<account>
<username>paul</username>
<link title="addresses" rel="related" href="http://example.com/account/paul/addresses" />
<link title="history" rel="related" href="http://example.com/account/paul/history" />
</account>
간단한 계정 JSON :
{
"username": "paul",
"addresses": "http://example.com/account/paul/addresses"
"history": "http://example.com/account/paul/history"
}
간단한 계정 XML :
<account>
<username>paul</username>
<addresses>http://example.com/account/paul/addresses</addresses>
<history>http://example.com/account/paul/history</history>
</account>