강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

Sam Seol님의 프로필 이미지
Sam Seol

작성한 질문수

모든 개발자를 위한 HTTP 웹 기본 지식

콘텐츠 협상

Contents-type 관련

작성

·

265

0

안녕하세요

질문이 있습니다.

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

증상

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

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

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

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

여기서 질문이 있습니다.

응답 Contents-type : application-json 

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

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

감사합니다.

 

퀴즈

71%나 틀려요. 한번 도전해보세요!

표현 헤더(Content-Type, Content-Encoding 등)의 주된 역할은 무엇일까요?

클라이언트의 요청을 처리하는 서버 정보를 알려줍니다.

메시지 바디에 담긴 데이터 정보를 설명합니다.

클라이언트가 선호하는 데이터 형식을 서버에 전달합니다.

요청 또는 응답 메시지의 전송 방식을 지정합니다.

답변 2

0

안녕하세요.

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

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

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

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

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

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

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

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

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

Sam Seol님의 프로필 이미지
Sam Seol
질문자

친절하시고 예제까지

답변 감사합니다^^

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

왜 Contents Type을 application- json

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

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

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

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

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

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

Sam Seol님의 프로필 이미지
Sam Seol
질문자

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

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

답변 정말 감사합니다^^

0

Sam Seol님의 프로필 이미지
Sam Seol
질문자

우선은 쭈욱 찾아 보면서 

@RequestMapping 의 produces 속성까지 왔네요

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

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

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

 * @author Juergen Hoeller

 * @author Arjen Poutsma

 * @author Sam Brannen

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

Sam Seol님의 프로필 이미지
Sam Seol

작성한 질문수

질문하기