ContentNegotiatingViewResolver

ViewResolver 중의 하나로, 들어오는 요청의 accept header(브라우저 또는 클라이언트가 어떠한 타입의 본문을 응답을 원한다고 서버에 알려주는 것)에 따라 응답이 달라진다.

어떠한 요청이 들어오면 그 요청의 응답을 만들 수 있는 모든 view를 찾아내고, 최종적으로 accept header의 view 타입과 비교하여 선택한다.

accpet header가 없는 요청인 경우 format이라는 매개변수를 사용한다.

예시

(User와 UserController 코드는 이전 포스트와 동일)

@Test 파일을 만든다. accept header를 XML로 준다.(여기서는 응답은 json으로 보내고, 요청은 xml로 받길 바란다)

스크린샷 2020-02-09 오후 11.34.54.png

만약 error가 발생한다면, HttpMessageConverter가 없기 때문이다. pom.xml에 아래의 의존성을 추가해주면 된다.

<dependency>
	<groupId>com.fasterxml.jackson.dataformat</groupId>
	<artifactId>jackson-dataformat-xml</artifactId>
	<version>2.9.6</version>
</dependency>

테스트를 돌리면 패스함을 볼 수 있다.

0개의 댓글