구글링, chatGPT에서 배운내용들 정리
배경지식
Response Body(응답 바디) 가 뭐지?
📌 뜻:
HTTP 응답 중 실제로 브라우저나 클라이언트가 받아보는 내용(본문 부분)
보통 json 형태임.
@ResponseBody 어노테이션
📌 기본 정의
@ResponseBody는 메서드의 반환값을 HTTP 응답 본문으로 직렬화해서 그대로 내려보내라는 뜻이야.
- HTML 페이지를 렌더링하는 대신
- 문자열, JSON, XML, 객체 등을 응답 Body에 직접 씀
- @ResponseBody : "응답 바디(json)를 채우겠다."
@ResponseBody 를 사용
HTTP의 BODY에 문자 내용을 직접 반환
'viewResolver' 대신에 'HttpMessageConverter'가 동작
기본 문자 처리 : StringHttpMessageConverter
기본 객체 처리 : MappingJackson2HttpMessageConverter
* Jackson : 객체를 json으로 바꾸어주는 라이브러리
byte 처리 등등 기타 여러 HttpMessageConverter가 기본으로 등록되어 있음
클라이언트의 HTTP Accept 헤더와 서버의 컨트롤러 반환 타입 정보 들을 조합해서 'HttpMessageConverter'가 선택된다.
-inflrean 김영한
1. @Controller + 문자열 반환
-> 맵핑하고, 함수에서 처리할거 처리하고, 웹페이지 렌더링
@Controller
public class controller {
@GetMapping("/hello")
public String hello() {
return "hello"; // → hello.html 템플릿 렌더링
}
}
2. @Controller + @ResponseBody + 문자열 반환
-> 웹페이지가 읽을 수 있는 자료형(json, txt)으로 변환
@Controller
public class Controller {
@GetMapping("/hello")
@ResponseBody
public String hello() {
return "hello";
}
}
*@RestController는 @ResponseBody가 포함되어 있어서 @RestController 가 붙은 컨트롤러 클래스에서 web을 띄우려고 하면 return 된 객체를 웹에 보여줌. 그래서 이 점을 유의해야 함.
