- API 방식 : 일단 view 에 관여하지 않고 서버간 데이터만 전달하는 방식으로 이해하자.
hello-string method
@ResponseBody
: 해당 요청에 대한 HelloController가 helloString 메소드를 실행하여 처리할 때,
입력받은 query string 의 name 의 value 를 HTTP의 body 부에 직접 "hello + (name key의 value)" 형태로 넘겨준다.
즉, ResponseBody 어노테이션 때문에 view가 없이 데이터만 넘겨줌.
html 태그 없이 body 부의 hello spring 만 보이는 상태.
helloApi Method
Hello static class 를 생성, helloApi 메소드에서 Hello 객체 인스턴스를 생성하여 RequestParam 으로 넘겨준 name key 의 value 를 Hello 객체의 인스턴스인 hello의 setName 으로 바인드 한 뒤, ResponseBody로 Hello 객체 타입으로 넘겨준다.
getter/setter - 관련용어 : 자바 빈 표준, 프로퍼티 접근방식
JSON 방식으로 출력되는 것을 확인할 수 있다. 소스코드(view-source)로 보아도 동일. 예전엔 xml 로 반환시키는 경우도 많았다.
***@ResponseBody 동작원리
- 기존에 설명했던 것처럼 url 에 따른 Controller 를 찾는데, 처리 메서드가 @ReponseBody 가 적용되어있으면 viewResolver가 아닌 HttpMessageConverter 로 처리 메소드의 return 값(hello(name:spring))을 전달한다.
- 이 때, return 값이 단순 문자열이면 StringHttpMessageConverter, 객체면 MappingJackson2HttpMessageConverter 가 동작한다.
- 객체를 Json 으로 컨버팅 할 때, 대표적으로 사용되는 대표적인 라이브러리가 구글의 gson 과 jackson 으로 2가지 이다.
- 그외 byte 등 기타 return 은 HttpMessageConverter 라이브러리 표준에 따라 처리. 실무에서 그대로 사용해서 깊게 다룰 필요성이 적다.
- 컨버팅된 결과값을 요청한 웹 브라우저에 전달한다.
* HTTP Accept Header 요청에 따른 HttpMessageConverter 방식 설정
- HTTP Accept Header
- 만약 xml 등으로 변환해주고 싶다면, xml 로 반환할 수 있게 하는 라이브러리만 설정하여 코딩하고, 서버의 컨트롤러 반환 타입을 설정 해준 뒤, 라이브러리 표준에 맞게 HTTP Accept Header 를 설정하면 HttpMessageConverter 방식을 설정하여 xml 방식으로 반환할 수 있다.
'Java > 스프링 입문 - 스프링 부트, 웹 MVC, DB 접근 기술' 카테고리의 다른 글
[회원 관리 예제, 백엔드 개발 - (2)] 회원 도메인과 리포지토리 만들기 (0) | 2022.06.29 |
---|---|
[회원 관리 예제, 백엔드 개발 - (1)] 비즈니스 요구사항 정리 (0) | 2022.06.29 |
[스프링 웹 개발 기초 - (2)] MVC와 템플릿 엔진 (0) | 2022.06.29 |
[스프링 웹 개발 기초 - (1)] 정적 컨텐츠 (0) | 2022.06.29 |
[프로젝트 환경설정 - (4)] 빌드하고 실행하기 (0) | 2022.06.29 |