요청 매핑하기
미디어 타입과 헤더, 매개변수에 맞게 요청을 매핑할 수 있다.
원하는 타입의 요청만 처리하기
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을 넣고 요청하였더니 테스트가 실패하였다.
특정한 헤더 키/값이 있는 요청을 처리하고 싶은 경우
- 특정한 헤더 키값에 대한 요청 처리도 가능하다.
특정한 매개변수 요청 처리
- 헤더에서 설정한 것처럼 매개변수에도 똑같이 적용이 된다.
'스프링 > 스프링 MVC' 카테고리의 다른 글
Spring MVC @PathVariable, @MatrixVariable, @RequestParam (0) | 2019.12.24 |
---|---|
Spring MVC HEAD, OPTIONS HTTP Method (0) | 2019.12.22 |
Spring MVC HTTP Method(@RequestMapping), URL 패턴 (0) | 2019.12.22 |
전역 컨트롤러: @(Rest)ControllerAdvice (0) | 2019.12.12 |
예외 처리 핸들러: @ExceptionHandler (0) | 2019.12.12 |