REST - Hypermedia As The Engine Of Application State (HATEOAS)
Source
Evernote/Technote scraps/REST - Hypermedia As The Engine Of Application State - The Carbon Shaft - Planet JBoss Community.md
Summary
이 문서는 Roy Fielding 의 논문과 블로그를 인용하여 REST 의 핵심 제약 조건인 HATEOAS(Hypermedia As The Engine Of Application State) 와 Uniform Interface 의 의미를 설명합니다. 진정한 REST API 는 고정된 리소스 이름이나 계층 구조를 정의하지 않아야 하며, 클라이언트가 서버의 네임스페이스를 제어할 수 있도록 해야 합니다. 대신 서버는 미디어 타입과 링크 관계를 통해 클라이언트에게 적절한 URI 구성 방법을 지시해야 합니다. HATEOAS 가 적용되면 메시지는 자기 기술적(self-describing)이며, 클라이언트는 하이퍼미디어에 대한 일반적인 이해만으로도 특정 애플리케이션이나 서버와 상호작용할 수 있습니다. 즉, 초기 진입점부터 시작하여 서버가 반환하는 하이퍼미디어 콘텐츠에 포함된 허용 가능한 상태 전이(예: 다음에 수행 가능한 HTTP 메서드 및 URI)를 따라가며 애플리케이션 상태를 구동해야 합니다. 고정된 URI 와 메서드 조합을 사전에 정의하는 방식은 RPC 의 기능적 결합(functional coupling)과 유사한 오류로 간주됩니다.
Key Points
- REST API 는 고정된 리소스 이름이나 계층 구조를 정의해서는 안 되며, 이는 클라이언트와 서버 간의 결합을 유발합니다.
- 서버는 미디어 타입과 링크 관계를 통해 클라이언트에게 URI 구성 방법을 지시해야 합니다.
- HATEOAS 는 메시지가 자기 기술적(self-describing)이 되도록 하여 상호작용의 가시성을 높입니다.
- REST 클라이언트는 하이퍼미디어에 대한 일반적인 이해만으로도 특정 애플리케이션과 상호작용할 수 있어야 합니다.
- 서버는 현재 상태에서 허용 가능한 다음 상태 전이(메서드 및 URI)를 하이퍼미디어 콘텐츠로 반환해야 합니다.
- 고정된 URI 와 메서드를 사용하는 방식은 RPC 의 기능적 결합과 유사하며, 진정한 REST 가 아닙니다.