티스토리 뷰

Spring

Spring - MVC ContentType _Mapping

엔꾸꾸 2019. 7. 22. 23:40

Spring - ContentType Mapping

  • 특정한 타입의 데이터를 담고있는 요청만 처리하도록 매핑하기

    • @RequestMapping의 consumes 속성을 활용

    • consumes에는 문자열이 오는데 문자열을 사용할경우 오탈자가 발생하는등 개발자에 의한 오류가 발생할수 있기때문에 org.springframework.http.MediaType에 정의된 상수를 사용할것을 권장한다.

    • String Type은 _VALUE로 끝나는 상수를 사용하자

  • org.springframework.http.MediaType.java

org.springframework.http.MediaType.java

  • ContentType이란 ?

    • HttpHeader중 ContentType 은 해당 본문의 DataType을 알려주는 역할을 한다.
  • JSON 요청만 처리하도록 하는 Handler 코드 작성

JSON 요청만 처리하도록 하는 Handler

  • 테스트

TEST

  • 결과
    • 415 UnSupportedMediaType 응답
    • 해당 컨텐츠타입을 지원하지않음.

415 UnSupportedMediaType

  • 일반적으로 web에서 요청을보낼경우 text/html 로 요청을 보내게된다.

  • ContentType 을 application/json 으로 테스트진행

ContentType: application/json 

  • 결과
    • 200 응답

result

  • 특정한 타입의 응답을 만드는 핸들러

    • @RequestMapping(produces="application/json") 을 활용
    • accept header로 필터링한다.
  • TEXT/PLANE 의 응답만 처리하는 핸들러 코드 작성

TEXT/PLANE

  • 테스트
    • application/json 응답을 받도록 요청

accept: application/json

  • 결과
    • 406 NotSupported 응답

result

애매한점

  • accept Header가 정의되지 않은경우, 모든 응답을 받는다는 의미이기때문에 에러가 발생하지 않는다.

accept header undefined

  • 결과

result

  • 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
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함