API (@ResponseBody 사용 원리)
- 클라이언트 요청이 내장 톰캣 서버에서 요청에 맞는 컨트롤러에 맵핑된 메서드로 보냄
- @ReponseBody가 붙어있으므로 HTTP의 BODY에 문자 내용을 직접 반환
- 반환할 때 viewResolver대신 HttpMessageConverter가 동작
- 기본 문자 처리는 StringHttpMessageConverter 가 동작
- 기본 객체 처리는 MappingJackson2HttpMessageConverter 가 동작(객체를 JSON으로 바꿔주는 유명 라이브러리는 Jackson과 구글에서 만든 Gson이 있는데 Spring에서는 기본으로 Jackson으로 제공)
- byte 처리 등등 기타 여러 HttpMessageConverter가 기본으로 등록되어 있음(기본적으로 셋팅이 되어 있어서 손댈일 없음)
- 클라이언트의 HTTP Accept 헤더(요청시 받고싶은 포맷이 있음)와 서버의 컨트롤러 반환 타입 정보 둘을 조합해서 HttpMessageConverter가 선택됨
Controller
@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name") String name) {
return "Hello " + name;
}
@GetMapping("hello-api")
@ResponseBody
public Hello helloApi(@RequestParam("name") String name) {
Hello hello = new Hello();
hello.setName(name);
return hello;
}
static class Hello {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
- control(command) + shift + enter - 자동으로 괄호 닫고 세미콜론
- command+n / alt+insert - getter/setter/생성자 자동완성 (Generate)
- @ResponseBody
- viewResolver를 거치지 않고 Body에 데이터를 담아서 보냄
- hello-string을 요청하면 문자열로 반환 됨
- hello-api을 요청하면 객체를 생성하고 Json타입으로 반환됨
실행 결과
- hello-string
- hello-api
이미지 출처 - https://www.inflearn.com/course/스프링-입문-스프링부트
'Spring 입문' 카테고리의 다른 글
스프링MVC 입문09 (0) | 2022.11.10 |
---|---|
스프링MVC 입문08 (0) | 2022.11.09 |
스프링MVC 입문06 (0) | 2022.11.09 |
스프링MVC 입문05 (0) | 2022.11.09 |
스프링MVC 입문04 (0) | 2022.11.09 |
댓글