HATEOAS (REST 아키텍처)에 대한 실제 예 [닫기]


140

모두가 알 수 있듯이 야생에는 가짜 / 기본 REST-API가 많이 있습니다 (HTTP-API를 구현하고 응용 프로그램의 엔진 상태 그대로의 하이퍼 텍스트로 HTTP-API를 구현하고 REST라고 부릅니다. 받는 로이 T. 필딩의 유명한 호언 장담 먼저 REST 패러다임을 지정한 사람).

상태 전환을위한 관련 애플리케이션 별 미디어 유형 정의와 함께 진정한 하이퍼 텍스트 기반 REST 구현의 실용적인 예를 찾을 수 없었습니다.

그러한 구현에 대해 공개적으로 액세스 가능한 예가 있습니까?


3
많은 사람들이 REST가 "쉽다"고 주장하기 때문에이 흥미로운 사실을 알게되었지만 Fielding 자신은 이것이 간단한 아키텍처이지만이를 사용하여 애플리케이션을 설계하는 것은 간단하지 않다고 말합니다.
aehlke

3
그건 그렇고, 그것은 HATEOS가 아니라 HATEOAS이어야하며 나중에 Google이 잘되지 않습니다.
David Roussel


2
Paypal은 이것을 사용하는 것 같습니다 : developer.paypal.com/docs/integration/direct/…
Andrew Thaddeus Martin

Roy Fielding 자신이 HATEOAS를 사용하여 애플리케이션을 구축 한 적이 있습니까?
systemovich

답변:


102

코드를 실행한다는 의미에서 구현 된 것은 아니지만 InfoQ에서 " 커피 한 잔을 얻는 방법 "기사를 정말 좋아합니다 . 스타 벅스에서 커피를 RESTful 프로토콜로 주문하는 과정을 설명합니다. 이는 일반적인 "모든 것이 리소스"인 REST 입문 기사를 넘어 HATEOAS에 중점을 둡니다. 추천.


5
짐 웨버, Sayas Parastatidis 이안 로빈슨이 책은 "연습에서 휴식은"매우 유용합니다
DomreiRoam

2
이 기사는 훌륭하지만 불행히도 설명하는 API는 사용자 정의 미디어 유형을 사용하지 않기 때문에 HATEOAS 원칙을 엄격하게 준수하지 않습니다. 모든 것이 application / xml 인 경우 클라이언트는 각 리소스를 조작 (예 : 직렬화 해제, 구문 분석, 표시)하는 방법을 어떻게 알 수 있습니까? 사람이 읽을 수있는 문서와 같이이 정보를 전달하는 비표준적인 방법에 달려 있습니다.
ygormutti

21

방법에 대한 일 클라우드 API ? 소개에서 :

API는 URI 공간에서 특정 구조를 전제로하지 않습니다. 시작점은 클라우드 자체를 식별하는 클라우드 서비스 제공자가 제공 한 URI입니다. 클라우드의 표현에는 클라우드의 다른 리소스에 대한 URI와 그에 대해 수행 될 수있는 작업 (예 : 가상 머신 배포 및 시작)에 대한 URI가 포함됩니다.

스토리는 또한 도움이 될 수 있습니다.


2
내가 HATEAOS 경로를 시작하게 된 것은 뒷이야기입니다.
CyberFonic

3
모든 링크가 죽었
Roeland 반 Heddegem

"kenai.com 사이트가 폐쇄되어 죄송합니다."
Nick Rolando

@ NickRolando, 나는 링크를 교체했다.
Rich Apodaca 2016 년

@RichApodaca, 뒷이야기 링크가 죽었습니다.
Vasantha Ganesh K

7

Netflix에는 리소스의 일부로 링크를 포함하는 HATEOAS 기반 REST API 가 있습니다.


1
현재 상태 코드는 404입니다.
naXa

1
@Will Sargent 링크가 끊어졌습니다. 업데이트하십시오.
Govi S

죄송합니다. Netflix가 다운하여 다른 것과 함께갔습니다.
Will Sargent

2
링크 전용 답변은 이러한 링크가 죽은 경우 관련성이 낮은 경향이 있습니다.
nyedidikeke

@nyedidikeke 그것은 링크이지만이 맥락에 대한 답은 게시물을 편집하여 링크를 수정하면됩니다!
Al-Mothafar

3

Roy의 4 번째 요점에서 Sun Cloud API의 RESTfulness가 실제로 해결되지 않았습니까?

REST API는 고정 자원 이름 또는 계층 구조 (클라이언트와 서버의 명백한 결합)를 정의해서는 안됩니다. 서버는 자신의 네임 스페이스를 자유롭게 제어 할 수 있어야합니다. 대신, 서버가 클라이언트에게 HTML 형식 및 URI 템플릿에서 수행되는 것과 같은 적절한 URI를 구성하는 방법을 미디어 유형 및 링크 관계 내에서 해당 명령을 정의하여 지시 할 수 있습니다. [여기서 실패는 클라이언트가 RPC의 기능적 커플 링과 동등한 데이터 지향적 인 도메인 별 표준과 같은 대역 외 정보로 인해 자원 구조를 가정하고 있음을 의미합니다.

예제 1 정의 된 heirachy에서 고정 자원 이름 :

Sun Cloud API에서 : "... VDC의 표현에는 DC를 나타내는 클러스터 표현이 포함되며, 각 클러스터에 VM의 표현이 포함됩니다."

예 2 도메인 별 표준과 같은 대역 외 정보 :

클라우드 자원 필드 "uri"에 대한 "자원 통신 메커니즘"이 GET임을 알기 위해서는 위키 페이지 컨텐츠 (대역 외 정보)가 있어야합니다.


2
당신은 맞습니다, 그것은 매우 잘못된 것입니다. 그러나 Roy는 미디어 유형의 내용이 아닌 URI 공간의 리소스 이름에 대해 이야기하고 있습니다. Sun은 언제든지 클러스터에 액세스하는 데 사용되는 URI를 자유롭게 변경할 수 있습니다. 분명히, 미디어 유형의 새 버전을 작성하지 않고 표현 내에서 "클러스터"라는 용어를 "그룹"으로 변경할 수는 없지만 URI를 다른 것으로 변경할 수 있습니다.
대럴 밀러

4
우리는 Sun API가 HTTP를 균일 한 인터페이스로 사용한다는 것을 알고 있으므로 클라이언트는 GET이 클라우드 자원에 유효한 동사라는 것을 알기 위해 위키 페이지를 볼 필요가 없습니다. GET이 안전한 동사라는 것을 알고 있다고 생각하거나 OPTIONS를 사용하여 사용할 수 있는지 확인할 수 있습니다.
Darrel Miller

3

나는 이것이 얼마 전에 요청되었다는 것을 깨달았지만 간단한 예제를 위해 "적절한"REST API 흐름을 시연하는 데 착수했다. REST에 대한 Roy의 규칙을 따르려고했습니다. 아마 도움이 될 수 있습니다 : REST를 사용하는 API 예제

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.