728x90
API
@ResponseBody 문자 반환
- @ResponseBody 를 사용하면 뷰 리졸버(viewResolver)를 사용하지 않음
- 대신에 HTTP의 BODY에 문자 내용을 직접 반환(HTML BODY 태그가 아님)
-
@Controller public class HelloController { @GetMapping("hello-string") @ResponseBody public String helloString(@RequestParam("name") String name) { return "hello " + name; } }
@ResponseBody 객체 반환
- 객체를 반환하면 객체가 JSON을 변환됨
-
@Controller public class HelloController { @GetMapping("hello-api") @ResponseBody public Hello helloApi(@RequestParam("name") String name) { Hello hello = new Hello(); hello.setName(name); return hello; } //자바 빈 표준에 따른 접근 방법 //private 필드 접근 방법 : getter, setter 함수 이용 static class Hello { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } } }
@ResponseBody 사용 원리
1. 웹 브라우저에서 URL을 입력
2. 내장 톰캣 서버가 /hello-api를 찾는다고 넘김
3. Spring은 "hello-api"를 찾아내고, @ResponseBody가 있는 것을 확인하고 객체 그대로 반환
4. 객체를 보고 HttpMessageConverter가 동작해서 JSON 형식으로 바꿔서 응답
- @ResponseBody를 사용
- HTTP의 BODY에 문자 내용을 직접 반환
- viewResolver 대신에 HttpMessageConverter가 동작
- 기본 문자 처리 : StringHttpMessageConverter
- 기본 객체 처리 : MappingJackson2HttpMessageConverter
- byte 처리 등 기타 여러 HttpMessageConverter가 기본으로 등록되어 있음
* 참고 : 클라이언트의 HTTP Accept 해더와 서버의 컨트롤러 반환 타입 정보 둘을 조합해서
HttpMessageConverter 가 선택된다
- xml로 반환하게 해주는 라이브러리를 추가하면 JSON으로 반환하는 게 아닌, xml로도 반환할 수 있다
알게된 점 :
- @RestController 어노테이션만을 써야 객체로 반환할 수 있는 줄 알았음
- @Controller를 사용하고 함수 위에 @ResponseBody 어노테이션을 적고, 객체를 반환해도 된다
'Spring Framework' 카테고리의 다른 글
Spring) 스프링 빈과 의존관계 (0) | 2022.01.22 |
---|---|
Spring) 회원관리 예제 - 백엔드 개발 (0) | 2022.01.22 |
Spring) 빌드하고 실행하기 / 정적 컨텐츠 / MVC와 템플릿 엔진 (0) | 2022.01.08 |
Spring) 스프링부트 프로젝트 생성 / 라이브러리 살펴보기 / Veiw 환경설정 (0) | 2022.01.03 |
스파르타코딩클럽) 웹 개발의 봄, Spring 20기 후기 (0) | 2021.08.04 |