아카이브

[스프링 기반 REST API 개발] Spring HATEOAS 적용 본문

Spring/스프링 기반 REST API 개발

[스프링 기반 REST API 개발] Spring HATEOAS 적용

주멘이 2021. 1. 6. 21:24

스프링 부트가 HATEOAS 자동설정을 지원하므로, @EnableEntityLinks, @EnableHypermediaSupport 어노테이션 X 

 < HATEOAS 1.0 변경점 > 

1. extends ResourceSupport 문제 : objectMapper가  BeanSerializer로 serialize하는데,  BeanSerializer는 기본적으로 그 객체의 이름으로 감싸서 보낸다. 

- @JsonUnwrapped 로 해결 : wrapping object를 unwrapping하여 json을 펼쳐준다.

- extends EntityModel<T> : 내부적으로 @JsonUnwrapped 처리가 되어있다. 

EntityModel<T> getContent() method
EventResource extends EntityModel<Event>  add()를 통해 self link를 추가

2. Content-Type : application/hal+json 으로 보내면 client가  _links 정보를 예상 O

controller produces에 HAL_JSON을 적용한 모습

EventController의 POST createEvent() handler 내부의 link 생성과 add

LinkBuilder로 selfLink를 생성하고, EntityModel로 link를 추가한다

@Test의 mockMvc 테스트 코드 일부

Content-Type : HAL+JSON

jsonPath를 통해 _links의 self, query-events, update-events 를 확인할 수 있다.