2024. 2. 21. 22:46ㆍSPRING
MVC + 템플릿 엔진을 통해 view를 반환할 때엔,
Controller 에서 Model에 값을 담아 String 문자열을 반환 -> ViewResolver 를 통해 해당 템플릿을 찾고 거기에 데이터들을 바인딩해서 노출했었음.
그런데, 서버 - 서버 의 통신 등에서는 View 등이 있을 필요가 없음.
서버끼리 화면 보여줄 일 있음? 없음.
위의 예시처럼, 화면이 필요 없는 경우도 더러 있음.
이럴 땐 데이터만 있으면 되고, 데이터만 넘겨주면 됨.
Http 프로토콜의 Body부에 값을 직접 때려박을 수 있음.
방법?
Controller 에서 메서드에 @ResponseBody 애노테이션을 달아주면 됨.
이를 통해 반환되는 값이 HttpResponse 의 body에 바로 담기게 됨.
@ResponseBody // http 바디부에 return 값을 넣겠다는 에노테이션
@GetMapping("study-string")
public String studyString(@RequestParam("name") String name) {
return name + "is studying now";
}
@ResponseBody 를 메서드에 붙이면, 메서드의 반환값이 HttpResponse Body 에 바로 꽂힌다 했음.
해당 메서드를 실행하고 요청 url 을 입력하면, 브라우저 화면에 name is studying now 가 출력됨.
문자열을 반환하면 문자열이 바로 나오네?
그럼 객체를 반환하면?
@ResponseBody
@GetMapping("study-api")
public DataForStudy studyAPI(@RequestParam("name")String name) {
DataForStudy dataForStudy = new DataForStudy();
dataForStudy.setName(name);
return dataForStudy;
}
공부용 데이터 객체를 반환 해보았음.
{"name":"뺑글이안경"}
{"name":"뺑글이안경"}
짜란. 뭔가 형태가 잡힘. 이와 같은 형식을 JSON(JavaScript Obejct Notation) 이라 함.
별거 없음. 저런 형식을 띈 String 덩어리임.
자 이제, @ResponseBody를 통해 body에 값을 바로 넣을 수 있는 건 알았음.
그럼, 어떻게 동작하는지도 함 살펴 보자.
- @ResponseBody를 사용.
- HTTP의 BODY에 내용을 직접 반환함.
- ViewResolver 대신 HttpMessageConverter가 동작함. (View 필요 없잖아?)
- 기본 문자처리 : StringHttpMessageConverter - 반환된 String 을 httpMessage 로 반환 해줌
- 기본 객체처리 : MappingJacson2HttpMessageConverter - 반환된 객체를 property 접근법(getter 등)을 사용하여 { "변수명" : "값"} 의 형태로 변환
'SPRING' 카테고리의 다른 글
| 의존 주입 (0) | 2024.02.25 |
|---|---|
| 테스트 코드 작성 시의 에로사항 (0) | 2024.02.24 |
| @RequestParam (0) | 2024.02.21 |
| 웹 개발 방식_MVC + 템플릿 엔진 방식 (0) | 2024.02.21 |
| 웹 개발 방식_정적 컨텐츠 전달 (0) | 2024.02.21 |