싫어하다

HATEOAS

HATEOAS(Hypermedia as the Engine of Application State)는 REST 애플리케이션아키텍처의 제약사항으로 다른 네트워크어플리케이션아키텍처와 구별됩니다.

HATEOAS를 사용하면 클라이언트는 하이퍼미디어를 통해 동적으로 정보를 제공하는 애플리케이션서버의 네트워크어플리케이션과 대화합니다.REST 클라이언트는 애플리케이션 또는 서버와 대화하는 방법에 대한 사전 지식이 거의 또는 전혀 필요하지 않습니다.

반면 Common Object Request Broker Architecture(CORBA) 클라이언트와 서버는 매뉴얼 또는 Interface Description Language(IDL; 인터페이스 기술 언어)를 통해 공유되는 고정 인터페이스를 통해 상호 작용합니다.

HATEOAS에 의해 부과되는 제한은 클라이언트와 서버를 분리합니다.이것에 의해, 서버 기능이 독립적으로 진화합니다.

HTTP를 구현하는 사용자 에이전트는 단순한 URL을 통해 REST API의 HTTP 요청을 작성합니다. 사용자 에이전트가 수행할 수 있는 모든 후속 요청은 각 요청에 대한 응답 내에서 검색됩니다.이러한 표현에 사용되는 미디어 유형 및 포함할 수 있는 링크 관계가 표준화됩니다.클라이언트는 표현 내의 링크에서 선택하거나 미디어 유형에 따라 제공되는 다른 방법으로 표현을 조작함으로써 응용 프로그램 상태를 이행합니다.이와 같이 RESTful 상호 작용은 대역 [1]외 정보가 아닌 하이퍼 미디어에 의해 이루어집니다.

예를 들어, 이 GET 요청은 계정 리소스를 가져오고 JSON [2]표현으로 세부 정보를 요청합니다.

얻다 /12345/12345 HTTP/1.1 주인: bank.example.com 

응답은 다음과 같습니다.

HTTP/1.1 200 { "account" { "account_number" : 12345, "balance" : { "currency" : "usd", "value" : 100.00}, "links" : { "/accounts/12345/deposits", "출금" : "/accounts/12345""close-filename": "/filename/12345/close-filename" } }

응답에는 입금, 인출, 이체 또는 폐쇄 요청(계정 폐쇄)과 같은 가능한 후속 링크가 포함됩니다.

예를 들어 나중에 계정이 초과 인출된 후에는 계정이 초과 인출되었기 때문에 사용 가능한 다른 링크 세트가 있습니다.

HTTP/1.1 200 { "account" { "account_number" : 12345, "balance" : { "currency" : "usd", "value" : -25.00}, "links" : "/accounts/12345/deposits" }

현재 이용 가능한 링크는 (예금에 POST를 통해) 더 많은 돈을 입금하는 것입니다.현재 상태에서는 다른 링크를 사용할 수 없습니다.따라서 어플리케이션스테이트의 엔진이라는 용어입니다.가능한 작업은 리소스 상태에 따라 달라집니다.

클라이언트가 서버가 제공하는 모든 미디어 유형과 통신 메커니즘을 이해할 필요는 없습니다.새로운 미디어 타입을 이해하는 기능은 [3]서버가 클라이언트에 제공하는 '코드 온 디맨드'를 통해 런타임에 취득할 수 있습니다.

오리진스

HATEOAS 제약은 REST의 "균일한 인터페이스" 기능의 필수적인 부분이며, Roy Fielding의 박사학위 [3]논문에서 정의되어 있습니다.Fielding은 자신의 [1]블로그에서 이 개념을 더 자세히 설명했습니다.

Fielding은 "수십 년 규모의 소프트웨어 설계: 모든 세부 사항은 소프트웨어 수명 및 독립적인 발전을 촉진하기 위한 것입니다."라고 설명합니다.많은 제약조건은 단기 효율과 정면으로 반대됩니다.안타깝게도 사람들은 단기적인 디자인은 꽤 잘하지만, 대개 장기적인 디자인은 형편없습니다."[1]

실장

「 」를 참조해 주세요.

레퍼런스

  1. ^ a b c Fielding, Roy T. (20 Oct 2008). "REST APIs must be hypertext-driven". Retrieved 20 May 2010.
  2. ^ Thijssen, Joshua (2016-10-29). "What is HATEOAS and why is it important for my REST API?". REST CookBook. Retrieved 2020-02-05.
  3. ^ a b Fielding, Roy Thomas (2000). "Representational State Transfer (REST)". Architectural Styles and the Design of Network-based Software Architectures (PhD). University of California, Irvine.
  4. ^ Siren: GitHub에서 엔티티를 나타내기 위한 하이퍼미디어 사양
  5. ^ "Collection+JSON - Hypermedia Type". Retrieved 2021-10-25.
  6. ^ "JSON API: Latest Specification". Retrieved 2021-10-25.
  7. ^ "Hydra: Hypermedia-Driven Web APIs". Retrieved 2021-10-27.