MVC 방식과 다르게 ViewResolver를 사용하지 않는다. 대신 HTTP의 Body부에 데이터를 직접 반환한다.
구현
먼저 Hello 객체를 선언한다. private으로 name 변수를 선언한 후, public 메서드인 Getter, Setter를 통해 name으로 접근한다.
static class Hello {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
hello-api라는 url을 매핑해준 후, @ResponseBody를 추가한다.
hello 객체를 반환하는 helloApi를 구성한다. 객체를 반환하고, 앞에 @ResponseBody 어노테이션이 있다면 json으로 데이터를 반환하는 것이 Default로 세팅된다.
@GetMapping("hello-api")
@ResponseBody
public Hello helloApi(@RequestParam("name") String name) {
Hello hello = new Hello();
hello.setName(name);
return hello; // 객체를 반환하고, ResponseBody를 해놓으면 그냥 json으로 반환하는 것이 default로 세팅
}
짜잔
@ResponseBody 동작 방식
1. hello-api를 Spring에서 받은 후 controller에서 찾는다(helloController)
2. @ResponseBody가 붙어 있는 것을 확인하면, "아! HTTP Response의 Body부에 그대로 데이터가 들어있겠구나"라고 판단
3. 그런데, 반환되는 값이 "문자"가 아닌 "객체"라면 JSON 방식으로 데이터를 변환한다. (HttpMessageConverter의 JsonConverter 동작)
출처
'🌱 Spring > Spring 웹 개발 기초' 카테고리의 다른 글
[Spring] MVC와 Template Engine (0) | 2023.06.30 |
---|---|
[Spring] 정적 컨텐츠 (0) | 2023.06.30 |