본문 바로가기

스프링/스프링 MVC

Spring MVC 미디어타입, 헤더, 매개변수 매핑

요청 매핑하기

미디어 타입과 헤더, 매개변수에 맞게 요청을 매핑할 수 있다.

원하는 타입의 요청만 처리하기

JSON 요청만 처리하고 싶을 경우

  • Annotaiton에 consumes 설정으로 원하는 타입을 설정할 수 있다. VALUE는 String을 리턴한다는 의미이다.

 

  • 테스트 코드에서 contentType을 JSON으로 설정하고 테스트하면 테스트가 성공한다.
  • APPLICATION_JSON, APPLICATION_JSON_VALUE 등 JSON으로만 설정하면 모두 가능하다.

Content Type을 주지 않을 경우

 

  • Content-Type 헤더를 설정하지 않고 테스트 시 415(UnsupportedMediaType) 상태 응답이 발생한다.

원하는 타입으로 응답하기

응답을 TEXT로 할 경우

 

 

  • 테스트에서 Accept 헤더를 TEXT로 설정하면 테스트가 정상 작동한다.
  • Accept 헤더를 설정하지 않으면 아무거나 받는다는 뜻이므로 이 또한 테스트가 성공할 것이다.

다른 Accept 헤더를 설정했을 때

 

  • Accept 헤더를 JSON으로 설정 후 요청을 보낼 시 406(Not Acceptable) 상태 응답이 발생한다.

Annotation 우선순위

  • 클래스 단과 메서드단에 동시에 설정을 하게 되면 둘 다 적용되는 게 아닌 메서드에서 오버라이드 하기 때문에 JSON만 적용된다.

특정한 헤더 요청 처리

특정한 헤더 요청을 처리하고 싶을 때

  • HOST 헤더 요청만 처리한다고 설정할 수 있다.

 

  • 테스트에 FROM 헤더 요청으로 보내면 테스트가 실패하게 된다.

특정한 헤더 요청만 처리를 하고 싶지 않을 때

  • !를 이용하여 FROM 요청은 처리하지 않도록 하였다.

 

  • 테스트에서 헤더에 FROM을 넣고 요청하였더니 테스트가 실패하였다.​

특정한 헤더 키/값이 있는 요청을 처리하고 싶은 경우

 

 

  • 특정한 헤더 키값에 대한 요청 처리도 가능하다.

특정한 매개변수 요청 처리

 

 

  • 헤더에서 설정한 것처럼 매개변수에도 똑같이 적용이 된다.

참고자료