Skip to Content
Suffering builds character
아카이브20.spring HateoasHATEOAS3.Spring HATEOAS 핵심 APIs

3.Spring HATEOAS 핵심 APIs

Spring HATEOAS는 하이퍼미디어 기반 REST 응답 생성을 위한 표현 모델(Representation Model) 클래스들을 제공하고 있음

하나의 하이퍼링크를 표현하는 객체

Link.java
// href - 링크 경로 // rel - 링크의 의미, ex. "self", "next" protected Link(String href, LinkRelation rel) { ... }
Sample.java
Link link = new Link("/orders/1").withSelfRel();

2. RepresentationModel<T extends RepresentationModel<T>>

모든 하이퍼미디어 응답의 기본 모델 타입 객체
→ 하이퍼링크만 포함하며, 실제 데이터는 없음

직접 사용하기보다는 다음에 소개될 EntityModel 등이 이 클래스를 상속받아서 사용함

RepresentationModel과 Link는 1:N관계
→ 하나의 RepresentationModel은 2개 이상의 Link를 가질 수 있음

Sample.java
RepresentationModel<?> model = new RepresentationModel<>() .add(new Link("/health").withRel("health"));

3. EntityModel<T>

실제 데이터를 포함하는 도메인 객체 + 하이퍼링크를 함께 묶는 모델 타입 객체

도메인 객체를 감싸며, _links를 통해 하이퍼링크를 함께 제공

주로 사용되는 클래스

Sample.java
EntityModel<Order> model = EntityModel.of(order, linkTo(methodOn(OrderController.class).getOrder(order.getId())).withSelfRel() );

4. API 요약

클래스설명대표 용도
Link개별 하이퍼링크 표현단일 링크 생성
RepresentationModel링크 전용 베이스 모델직접 사용하지 않음
EntityModel<T>단일 객체 + 링크자원 단건 응답
CollectionModel<T>여러 객체 + 공통 링크리스트 타입 응답
PagedModel<T>페이지 정보 + 객체 + 링크페이징 API 응답

이외에 여러 개의 EntityModel을 감싸는 CollectionModel과
페이지네이션된 결과를 포함하는 PagedModel 등도 있음

Last updated on