하이퍼 미디어 (HATEOAS)의 이점은 무엇입니까?


17

프로그램에서 사용하려는 API에 대한 HATEOAS의 이점을 이해하지 못합니다 (사람이 직접 API를 탐색하는 것과는 반대). 물론 고객은 URL 스키마에 바인딩되어 있지 않지만 내 마음에 같은 데이터 스키마에 바인딩되어 있습니다.

예를 들어 주문에서 항목을보고 싶다고 가정하고 이미 주문 URL을 발견했거나 알고 있다고 가정 해 봅시다.

증오 :

order = get(orderURL);
item = get(order.itemURL[5]);

비 증오심 :

order = get(orderURL);
item = get(getItemURL(order,5));

첫 번째 모델에서는 주문 객체에 itemURL 필드가 있다는 사실을 알아야합니다. 두 번째 모델에서는 아이템 URL을 구성하는 방법을 알아야합니다. 두 경우 모두 사전에 무언가를 "알아야"HATEOAS가 실제로 무엇을하고 있습니까?


1
get(orderURL);당신에게 말해야합니다 the fact that the order object has an itemURL field.
yannis

클라이언트 응용 프로그램을 작성할 때 필드가 무엇인지 미리 알아야합니다.
Pace


8
응용 프로그램이 주문에 항목이 있음을 알지 못하는 경우 응용 프로그램은 주문에서 항목을 가져 오는 방법은 무엇입니까? 검색은 수동 탐색에는 작동하지만 자동화 된 응용 프로그램에는 작동하지 않습니다.
Pace

답변:


6

한 가지 차이점은 스키마가 표준이되거나 최소한 다른 사람들이 재사용 할 수 있다는 것입니다.

예를 들어 Twitter API를 사용 중이고 StatusNet도 지원한다고 가정합니다 (또는 대신). Twitter와 동일한 데이터 모델을 사용하므로 API가 HATEOAS를 따르는 경우 이제 기본 URL 만 변경하면됩니다. 그렇지 않은 경우 이제 코드에서 각 단일 URL 을 변경 해야합니다.

물론 서비스의 진입 점 URL을 넣도록 코드를 변경해야하는 경우에는 그렇게 도움이되지 않을 수 있습니다. URL이 동적으로 삽입되면 정말 빛납니다. 예를 들어, Twillio와 같은 서비스를 구축하는 경우 사용자 고유의 API와 상호 작용합니다.


그것은 내가 고려하지 않은 흥미로운 점입니다.
Pace

@YannisRizos : 흠, HATEOAS가 표준이라고 말한 곳을 보지 못했습니다. "(데이터) 스키마 는 표준"이라고 말했다. REST 용어에서는 미디어 유형이됩니다.
André Paramés

두 번째로 읽을 때, 당신은 절대적으로 옳습니다.
yannis

2
예, 링크의 rel 이름이 동일하다고 가정하면. 그러나 일반적으로 말하고 특정 예를 언급 할뿐 아니라 전 세계의 모든 프로그래머가 유사하거나 동등한 조치를 위해 반드시 동일한 이름을 선택할 필요는 없습니다. 이 이점은 공통 인터페이스 이름 및 매개 변수에 동의하는 프로그래머로부터 제공됩니다.
derloopkat

8
  1. 탐색 가능한 API : 사소한 것처럼 들리지만 탐색 가능한 API의 성능을 과소 평가하지는 않습니다. 데이터를 탐색 할 수있는 기능을 통해 클라이언트 개발자는 API 및 해당 데이터 구조의 정신 모델을보다 쉽게 ​​구축 할 수 있습니다.

  2. 인라인 문서 : URL을 링크 관계로 사용하면 클라이언트 개발자가 문서를 가리킬 수 있습니다.

  3. 간단한 클라이언트 로직 : URL을 구성하는 대신 단순히 URL을 따르는 클라이언트는 구현 및 유지 관리가 쉬워야합니다.

  4. 서버는 URL 구조의 소유권을 갖습니다. 하이퍼 미디어를 사용하면 서버에서 사용하는 URL 구조에 대한 클라이언트의 하드 코딩 된 지식이 제거됩니다.

  5. 다른 서비스로 컨텐츠로드 오프로드 : 컨텐츠를 다른 서버 (예 : CDN)로 오프로드 할 때 Hypermedia가 필요합니다.

  6. 링크를 사용한 버전 관리 : Hypermedia는 API 버전 관리를 도와줍니다.

  7. 동일한 서비스의 여러 구현 : 하이퍼 미디어는 동일한 서비스의 여러 구현이 존재할 때 필요합니다 (한 클라이언트가 둘 이상의 액세스해야 함).

이 글 머리 기호에 대한 자세한 설명은 여기 ( http://soabits.blogspot.no/2013/12/selling-benefits-of-hypermedia.html) 에서 찾을 수 있습니다 .


> 다른 서비스로 컨텐츠로드 해제 : 컨텐츠를 다른 서버 (예 : CDN)로 오프로드 할 때 Hypermedia가 필요합니다. 아뇨. 동일한 링크를 유지하고 CDN을 사용할 수 있습니다.
Bruno Costa
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.