SPRING/스프링부트 개념과 활용
[스프링부트 개념과 활용] HATEOAS
JUMP개발자
2021. 1. 3. 23:27
jump-developer.tistory.com/49?category=868499
HATEOAS란 ?
Hypermedia as the Engine of Application State의 약자이다.
HATEOAS는 Rest APi를 만들 때 사용이 되고, 서버가 클라이언트에게 리소스에 대한 정보를 제공할 때 연관되어 있는 링크 정보들까지 같이 제공하는 역할을 한다.
사용되는 의존성
pom.xml에 아래와 같이 추가해준다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-hateoas</artifactId>
</dependency>
@RestController
public class HateoasController {
@GetMapping("/hello")
public EntityModel<Hello> hello() {
Hello hello = new Hello();
hello.setPrefix("hey, ");
hello.setName("jump");
EntityModel<Hello> helloEntityModel = new EntityModel<>(hello);
helloEntityModel.add(linkTo(methodOn(HateoasController.class).hello()).withSelfRel());
return helloEntityModel;
}
}
-> HateoasController에서 제공하는 hello라는 메서드에 대한 링크를 따서 이 링크를 Self라는 릴레이션을 만들어서 추가함.
@RunWith(SpringRunner.class)
@WebMvcTest(HateoasController.class)
public class HateoasControllerTest {
@Autowired
MockMvc mockMvc;
@Test
public void hello() throws Exception {
mockMvc.perform(get("/hello"))
.andDo(print())
.andExpect(status().isOk())
.andExpect(jsonPath("$._links.self").exists());
}
}
-> Hello라는 객체가 json으로 변환이 되어서 응답을 return한다.
public class Hello {
private String prefix;
private String name;
public String getPrefix() {
return prefix;
}
public void setPrefix(String prefix) {
this.prefix = prefix;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
TEST 결과