스프링에서 @ResponseBody를 사용하면, 반환된 데이터를 HTTP 응답 본문에 직접 작성하며, 스프링이 자동으로 적절한 Content-Type 헤더를 설정합니다.
Content-Type 설정 방식:
- HttpMessageConverter:
- @ResponseBody는 반환 데이터를 HTTP 응답 본문으로 변환하기 위해 HttpMessageConverter를 사용합니다.
- HttpMessageConverter는 반환 객체의 타입과 요청 헤더의 Accept를 기반으로 적절한 Content-Type을 결정합니다.
- 일반적인 Content-Type 예시:
- String 반환 시: text/plain;charset=UTF-8
- Map, Object, 또는 JSON 변환 가능 객체 반환 시: application/json;charset=UTF-8 (기본적으로 Jackson 라이브러리를 사용)
- XML 변환 가능 객체 반환 시 (XML 메시지 컨버터가 등록된 경우): application/xml;charset=UTF-8
- 커스터마이징:
- 개발자가 @RequestMapping이나 @GetMapping에 produces 속성을 설정하면 특정 Content-Type을 강제할 수 있습니다.
java코드 복사@GetMapping(value = "/example", produces = "application/json") public MyResponse example() { return new MyResponse(); }
- 개발자가 @RequestMapping이나 @GetMapping에 produces 속성을 설정하면 특정 Content-Type을 강제할 수 있습니다.
- 우선 순위:
- 클라이언트의 Accept 헤더가 우선순위를 가집니다.
- 스프링은 클라이언트의 요청을 만족시키는 Content-Type을 설정하려고 시도합니다. 하지만 명시된 produces가 있다면 그것이 우선합니다.
정리:
@ResponseBody를 사용하면 스프링이 응답 데이터 타입에 따라 자동으로 Content-Type을 설정하며, 일반적으로 JSON 데이터의 경우 application/json으로 설정됩니다.
'Springあるある' 카테고리의 다른 글
static class에 @Component 사용 시 주의점! (0) | 2025.01.06 |
---|---|
Request Body 전체 조회!!(Feat. HttpEntity) (0) | 2025.01.03 |
@ModelAttribute 실행 프로세스 (0) | 2025.01.03 |
@RequestParam(required=true)의 주의점 (0) | 2025.01.03 |
스프링 로그(feat. SLF4J ,Logback) (1) | 2025.01.03 |