티스토리 뷰
Spring - ContentType Mapping
특정한 타입의 데이터를 담고있는 요청만 처리하도록 매핑하기
@RequestMapping의 consumes 속성을 활용
consumes에는 문자열이 오는데 문자열을 사용할경우 오탈자가 발생하는등 개발자에 의한 오류가 발생할수 있기때문에 org.springframework.http.MediaType에 정의된 상수를 사용할것을 권장한다.
String Type은 _VALUE로 끝나는 상수를 사용하자
- org.springframework.http.MediaType.java
ContentType이란 ?
- HttpHeader중 ContentType 은 해당 본문의 DataType을 알려주는 역할을 한다.
JSON 요청만 처리하도록 하는 Handler 코드 작성
- 테스트
- 결과
- 415 UnSupportedMediaType 응답
- 해당 컨텐츠타입을 지원하지않음.
일반적으로 web에서 요청을보낼경우 text/html 로 요청을 보내게된다.
ContentType 을 application/json 으로 테스트진행
- 결과
- 200 응답
특정한 타입의 응답을 만드는 핸들러
- @RequestMapping(produces="application/json") 을 활용
- accept header로 필터링한다.
TEXT/PLANE 의 응답만 처리하는 핸들러 코드 작성
- 테스트
- application/json 응답을 받도록 요청
- 결과
- 406 NotSupported 응답
애매한점
- accept Header가 정의되지 않은경우, 모든 응답을 받는다는 의미이기때문에 에러가 발생하지 않는다.
- 결과
- consumes는 ClassLevel에 선언한 @RequestMapping에 사용한 것과 조합이 되지않고, MethodLevel에 선언한 @RequestMapping의 설정으로 덮어쓴다.
정리
- accept-header와 content-type header를 활용한 mapping 이 가능하다.
- accpet-header의 경우에는 명시되지않은경우, 모든 타입의 컨텐츠를 수용하는것으로 인해 오묘한점이 존재한다
'Spring' 카테고리의 다른 글
Spring - MVC HTTP HEAD_OPTIONS 요청 처리 (0) | 2019.07.23 |
---|---|
Spring - MVC Header_Parameter_Mapping (0) | 2019.07.23 |
Spring - MVC URI_Pattern_Mapping (0) | 2019.07.22 |
Spring - MVC HttpRequestMapping (0) | 2019.07.22 |
Spring - MVC DataBinding_PropertyEditor (0) | 2019.07.21 |
댓글