백기선(인프런 강의)/스프링 부트 개념과 활용
Spring Web MVC - ViewResolver
레알윙
2020. 4. 22. 12:28
반응형
ContentNegotiatingViewResolver
ViewResolver 중에 하나로, 들어오는 요청의 accept header( 클라이언트가 서버에게 원하는 응답을 요청하는 것 )에 따라 응답이 달라진다.
어떤한 요청이 들어오면 그 요청의 응답을 만들 수 있는 모든 view를 찾아내고, 최종적으로 accept header의 view 타입과 비교하여 선택한다.
accpet header가 없는 요청인 경우 format이라는 매개변수를 사용한다.
@RunWith(SpringRunner.class)
@WebMvcTest(SrpingController.class)
public class SrpingControllerTest {
@Autowired
MockMvc mockMvc;
@Test
public void createuser_XML() throws Exception {
String userJson = "{\"name\": \"jinSeok\", \"age\": \"30\"}";
mockMvc.perform(post("/user/create")
.contentType(MediaType.APPLICATION_JSON_UTF8)
.accept(MediaType.APPLICATION_XML)
.content(userJson))
.andExpect(status().isOk())
.andExpect(jsonPath("$.username",
is(equals("jinSeok"))))
.andExpect(jsonPath("$.age",
is(equals("30"))));
}
}
controller User class 등을 볼라면 아래 글 보기
2020/04/22 - [백기선 Spring/스프링 부트 개념과 활용] - Spring Web MVC -HttpMessageConverters
만약 506 erorr 가 발생하면 HttpMessageConverter 가 없기 때문이다. pom.xml에 아래의 의존성을 추가하자
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.9.6</version>
</dependency>
반응형