-
[스프링부트 개념과 활용] HttpMessageConvertersSPRING/스프링부트 개념과 활용 2020. 12. 27. 22:46
HttpMessageConverters
Client로 부터 온 요청 본문에 담긴 데이터를 Controller에서 사용하기 위해 변환하거나, 서버에서 생성한 응답결과를 Client에 내려주기 위한 응답 본문에 작성할 때 사용됨.
즉, @RequestBody / @ResponseBody 를 사용할 대에 HttpMessageConverter가 사용된다.
-> 위와 같이 RestController에서는 ResponseBody 생략이 가능하다.
위 스크린 샷 방식으로 작성을 하면 HttpMessageConverters가 사용된다.
어떤 요청을 받았는지 또는 어떤 응답을 리턴해야 되는지에 따라서 사용되는 HttpMessageConverters가 다르다.
HttpMessage 본문의 contentType이 JSON이고, Client에서도 Json 데이터를 서버로 보냈을 경우에는 jsonMessageConverter가 json 메시지를 User 객체로 전환시킨다.
마찬가지로 Client에게 return을 할 때에도 Http Message의 Accept가 json으로 설정되면, User 데이터를 Json 형식으로 전환시켜 return 한다.
User 객체 ->Test Class를 작성하여 정상적으로 동작하는지 확인할 수 있다.
@RunWith(SpringRunner.class) @WebMvcTest(UserController.class) public class UserControllerTest { @Autowired MockMvc mockMvc; // @WebMvtTest 를 통하여 Bean으로 자동 등록이 됨. @Test public void hello() throws Exception { mockMvc.perform(get("/hello")) .andExpect(status().isOk()) .andExpect(content().string("hello")); } @Test public void createUser_JSON() throws Exception { String userJson = "{\"username\": \"jump\", \"password\": \"1234\"}"; mockMvc.perform(post("/user/create") .contentType(MediaType.APPLICATION_JSON_UTF8) .accept(MediaType.APPLICATION_JSON_UTF8) .content(userJson)) .andExpect(status().isOk()) .andExpect(jsonPath("$.username",is(equalTo("jump")))) .andExpect(jsonPath("$.password",is(equalTo("1234")))); } }
'SPRING > 스프링부트 개념과 활용' 카테고리의 다른 글
[스프링 부트 개념과 활용] 정적 리소스 지원 (0) 2020.12.31 [스프링 부트 개념과 활용] ViewResolver (0) 2020.12.29 [스프링 개념과 활용] Spring-Boot-Devtools 의 활용 (0) 2020.12.27 [스프링 부트 개념과 활용] 스프링부트 로그 설정 (0) 2020.12.26 [스프링 부트 개념과 활용] 프로파일 관련 정리 (0) 2020.12.25