[스프링 부트] chapter 23. 스프링 웹 MVC 10부 Spring HATEOS
스프링 웹 MVC 10부 Spring HATEOS
Hypermedia As The Engine Of Application State
-
서버 : 현재 리소스와 연관된 링크 정보를 클라이언트에게 제공
-
클라이언트 : 연관된 링크 정보를 바탕으로 리소스에 접근
- 연관된 링크 정보
- Relation
- Hypertext Reference
-
spring-boot-starter-hateoas 의존성 추가
- https://docs.spring.io/spring-hateoas/docs/current/reference/html/
@RestController
public class SampleController {
@GetMapping("/hello")
public Resource<Hello> hello() {
Hello hello = new Hello();
hello.setPrefix("Hey");
hello.setName("juho");
Resource<Hello> helloResource = new Resource<>(hello);
helloResource.add(linkTo(methodOn(SampleController.class).hello()).withSelfRel());
return helloResource;
}
}
@RunWith(SpringRunner.class)
@WebMvcTest(SampleController.class)
public class SampleControllerTest {
@Autowired
MockMvc mockMvc;
@Test
public void hello() throws Exception {
mockMvc.perform(get("/hello"))
.andDo(print())
.andExpect(status().isOk())
.andExpect(jsonPath("$._links.self").exists());
}
}
@RunWith(SpringRunner.class)
@WebMvcTest(SampleController.class)
public class SampleControllerTest {
@Autowired
MockMvc mockMvc;
@Test
public void hello() throws Exception {
mockMvc.perform(get("/hello"))
.andDo(print())
.andExpect(status().isOk())
.andExpect(jsonPath("$._links.self").exists());
}
}
ObjectMapper 제공
-
spring.jackson.*
-
Jackson2ObjectMapperBuilder
LinkDiscovers 제공
- 클라이언트 쪽에서 링크 정보를 Rel 이름으로 찾을때 사용할 수 있는 XPath 확장 클래스