helloworld
HATEOAS 본문
이름부터 어렵다.. 일단 HATEOAS는 하나의 리소스에서 그 리소스와 관련된 링크를 추가하는 것이다.
예를 들면 한명의 유저의 정보를 가져오는 기능이 있다고 생각해보자.
유저의 정보를 보내면서 전체유저의 정보를 확인하는 소스의 링크까지 같이 보내는 것이다.
그럼 사용자 입장에서 굉장히 편리할 것이다. 다시 전체유저의 목록을 보러가는 귀찮음을
서버에서 한번에 보내주니 2번클릭할거 1번 클릭할것이다 ..
라고 나는 이해했다.
우선 pom.xml에
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-hateoas</artifactId>
</dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-hateoas</artifactId>
</dependency>
hateoas 디펜던시를 추가한다.
hateoas를 사용하고자 하는 기능에서
EntityModel과 WebMvcBuilder를 생성한다
EntityModel<User> model = EntityModel.of(user);
WebMvcLinkBuilder linkTo = linkTo(methodOn(this.getClass()).retrieveAllUsers());
model.add(linkTo.withRel("all-users"));
WebMvcLinkBuilder linkTo = linkTo(methodOn(this.getClass()).retrieveAllUsers());
model.add(linkTo.withRel("all-users"));
나는 당연히 EntityModel<User> model = new EntityModel<>(user);
이렇게 생성하려 하였으나 절대 안됐다..
왜 그런가 구글링을 엄청 하였으나 잘 찾아지지 않았는데
gpt형이 해결해 줬다..
EntityModel 클래스는 생성자로 직접 객체 생성하지 말고 정적팩토리메서드를 이용하란다..
그게 저 코드의 of()였다.
암튼 저건 개인의 정보를 확인하는 리소스였는데 postman에서 실행하면
{
"id": 1,
"name": "Song",
"joinDate": "2023-08-17T10:02:54.585+00:00",
"password": "pass1",
"ssn": "701017-1111111",
"_links": {
"all-users": {
"href": "http://localhost:9090/users"
}
}
전체 유저의 목록을 보여주는 리소스의 링크도 같이 나온다.
'restful' 카테고리의 다른 글
| jpa crud기능 사용(select) (0) | 2023.08.24 |
|---|---|
| jpa/ h2 (0) | 2023.08.24 |
| 버전관리 (0) | 2023.08.17 |
| 데이터 필터링 심화과정 (0) | 2023.08.13 |
| 데이터 필터링 (0) | 2023.08.13 |