HATEOAS == Hypermedia as the Engine of Application State 의 약어이다.
한마디로, 내가 만든 REST API의 resource간에 hyperlink를 만드는 방법이다!
_links
-> 해당 링크는 resource간의 hyperlink를 만들어준 예시이다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-hateoas</artifactId>
</dependency>
import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
import org.springframework.hateoas.EntityModel;
import org.springframework.hateoas.server.mvc.WebMvcLinkBuilder;
//http://localhost:8080/users
//EntityModel
//WebMvcLinkBuilder
@GetMapping("/users/{id}")
public EntityModel<User> retrieveUser(@PathVariable int id) {
User user = service.findOne(id);
if(user==null)
throw new UserNotFoundException("id:"+id);
EntityModel<User> entityModel = EntityModel.of(user);
WebMvcLinkBuilder link = linkTo(methodOn(this.getClass()).retrieveAllUsers());
entityModel.add(link.withRel("all-Users"));
return entityModel;
}
데이터와 링크 응답(response)를 생성하려면 HATEOAS의 두 가지 개념을 사용해야 한다.
-> EntityModel
과 WebMvcLinkBuilder
EntityModel
domain object를 wrapping하여 링크를 추가하는 클래스
링크를 반환하려면 EntityModel에 링크를 추가해야 한다!
WebMvcLinkBuilder
-> Spring MVC controller를 가리키는 link 객체의 구축을 용이하게 하는 빌더
entityModel.add()
를 통해, entityModel에 하이퍼링크를 추가해야 한다!실행결과,
참고 및 출처
이 시리즈는 Udemy 강의의 내용을 정리한 것입니다.
https://www.udemy.com/course/spring-boot-and-spring-framework-korean/