• 카테고리

    질문 & 답변
  • 세부 분야

    웹 개발

  • 해결 여부

    미해결

Contents-type 관련

21.06.10 09:57 작성 조회수 153

0

안녕하세요

질문이 있습니다.

주제와 다소 번외인 부분인데 Contents-type이 궁금합니다.

증상

스프링 @RestController를 사용했을 경우

핸들러 리턴 타입을 HashMap으로도 하고 Vo(직접 만들 vo클래스) 로도 했습니다.

그러면 화면에 응답본문이 뿌려지는데 JSON 타입으로 뿌려지길래 확인해보니 응답 헤더에 Contents-type이

application-json으로 되어 있습니다.

여기서 질문이 있습니다.

응답 Contents-type : application-json 

이건 @RestController 로 했을 경우 기본값으로 세팅이 되는지 아니면 어디 설정부분이 있는지 궁금합니다.

일단 @RestController를 파봤는데 안에 별 내용은 없더라구요

감사합니다.

 

답변 2

·

답변을 작성해보세요.

0

OMG님의 프로필

OMG

2021.06.10

안녕하세요.

@RestController 어노테이션 구현 코드를 보시면 아래와 같은 어노테이션들이 추가 되어 있는데요, 여기서 핵심은 @ResponseBody 어노테이션 입니다.

@ResponseBody 어노테이션은 자바 객체를 반환 하는 경우 HTTP 메시지 바디에 json 형태로 데이터를 입력하는데요, 

제가 작성한 스프링 코드로 예시를 들어드릴게요.

위의 코드는 @RestController가 선언 되어 있고, /simple과 /products 요청의 Http method  'GET'을 처리하는 컨트롤러 입니다.

우선 /simple 부터 요청해볼게요. 

간단한 문자열인 "ok"를 응답으로 내리면 서버에서 text/plain으로 처리 되는 것을 확인 하실 수 있고,

자바 객체를 return 할 경우 json 형태로 서버에서 내려주는 것을 확인 하 실 수 있습니다 ^^

@ResponseBody와 관련해서 영한님의  스프링 완전 정복 시리즈의 다음 강의인 

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 에서 자세히 알려주십니다 ㅎㅎ

Sam Seol님의 프로필

Sam Seol

질문자

2021.06.11

친절하시고 예제까지

답변 감사합니다^^

좀 더 궁금한점은 응답본문을 리턴시키는데(맵 또는 생성클래스일 경우)

왜 Contents Type을 application- json

으로만 보내느냐가 궁금했습니다.

어딘가에 기본 설정이 되어 있는건지 궁금하기도 하구요

OMG님의 프로필

OMG

2021.06.11

아! 해당 부분은 제가 출근 준비 중이라 퇴근하고 알려드려도 될까요?

"jackson 라이브러리" 혹은 "MappingJacksonHttpMessageConverter"

로 검색해보시면 아마 정답이 있을텐데요, 못 찾겠다 싶으시면 댓글 남겨주세요

저나 영한님이 답변  달아드릴 것 같네요~^^

Sam Seol님의 프로필

Sam Seol

질문자

2021.06.11

핸들러 어답터와 연관이 있었나 보군요!!!!!

^^!!!!!
여기서부터 제가 다시 찾아볼게요^^

답변 정말 감사합니다^^

0

Sam Seol님의 프로필

Sam Seol

질문자

2021.06.10

우선은 쭈욱 찾아 보면서 

@RequestMapping 의 produces 속성까지 왔네요

EX) @RequestMapping(value = "/hm", produces = MediaType.APPLICATION_JSON_VALUE)

produces 속성을 설정하지 않은 경우 기본 값이라든가 아니면 다른 설정이 있을거 같은데

주석으로 남겨져 있지 않네요 ㅠㅠ

 * @author Juergen Hoeller

 * @author Arjen Poutsma

 * @author Sam Brannen

이 분들 주석으로 좀 남겨주시지 ㅠㅠ