3.Spring HATEOAS 핵심 APIs
Spring HATEOAS는 하이퍼미디어 기반 REST 응답 생성을 위한 표현 모델(Representation Model) 클래스들을 제공하고 있음
1. Link
하나의 하이퍼링크를 표현하는 객체
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