작성
·
222
0
안녕하세요
질문이 있습니다.
주제와 다소 번외인 부분인데 Contents-type이 궁금합니다.
증상
스프링 @RestController를 사용했을 경우
핸들러 리턴 타입을 HashMap으로도 하고 Vo(직접 만들 vo클래스) 로도 했습니다.
그러면 화면에 응답본문이 뿌려지는데 JSON 타입으로 뿌려지길래 확인해보니 응답 헤더에 Contents-type이
application-json으로 되어 있습니다.
여기서 질문이 있습니다.
응답 Contents-type : application-json
이건 @RestController 로 했을 경우 기본값으로 세팅이 되는지 아니면 어디 설정부분이 있는지 궁금합니다.
일단 @RestController를 파봤는데 안에 별 내용은 없더라구요
감사합니다.
답변 2
0
안녕하세요.
@RestController 어노테이션 구현 코드를 보시면 아래와 같은 어노테이션들이 추가 되어 있는데요, 여기서 핵심은 @ResponseBody 어노테이션 입니다.
@ResponseBody 어노테이션은 자바 객체를 반환 하는 경우 HTTP 메시지 바디에 json 형태로 데이터를 입력하는데요,
제가 작성한 스프링 코드로 예시를 들어드릴게요.
위의 코드는 @RestController가 선언 되어 있고, /simple과 /products 요청의 Http method 'GET'을 처리하는 컨트롤러 입니다.
우선 /simple 부터 요청해볼게요.
간단한 문자열인 "ok"를 응답으로 내리면 서버에서 text/plain으로 처리 되는 것을 확인 하실 수 있고,
자바 객체를 return 할 경우 json 형태로 서버에서 내려주는 것을 확인 하 실 수 있습니다 ^^
@ResponseBody와 관련해서 영한님의 스프링 완전 정복 시리즈의 다음 강의인
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 에서 자세히 알려주십니다 ㅎㅎ
0
우선은 쭈욱 찾아 보면서
@RequestMapping 의 produces 속성까지 왔네요
EX) @RequestMapping(value = "/hm", produces = MediaType.APPLICATION_JSON_VALUE)
produces 속성을 설정하지 않은 경우 기본 값이라든가 아니면 다른 설정이 있을거 같은데
주석으로 남겨져 있지 않네요 ㅠㅠ
* @author Juergen Hoeller
* @author Arjen Poutsma
* @author Sam Brannen
이 분들 주석으로 좀 남겨주시지 ㅠㅠ
친절하시고 예제까지
답변 감사합니다^^
좀 더 궁금한점은 응답본문을 리턴시키는데(맵 또는 생성클래스일 경우)
왜 Contents Type을 application- json
으로만 보내느냐가 궁금했습니다.
어딘가에 기본 설정이 되어 있는건지 궁금하기도 하구요