사실 정적 컨텐츠 방식을 제외하면 MVC 방식에서 View를 찾아서 템플릿 엔진을 통해서 화면을 랜더링해서 HTML을 웹 브라우저에 넘기는 방법이 있고, API를 사용하는 방식이 있습니다.
즉, 2가지만 기억하면 됩니다. "HTML로 내리냐, API 방식으로 데이터를 바로 내리냐"
바로 코드로 봅시다. HelloController에 추가합니다.
@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name") String name) {
return "hello " + name;
}
실행을 해봅니다.
페이지 소스를 보면 HTML이 아니라 문자열만 나타납니다.
이전의 템플릿 엔진은 화면을 가지고 뷰라는 템플릿이 있는 상황에서 조작하는 방식이고,
API 방식은 데이터를 그대로 내려줍니다.
하지만 사실 문자열을 그대로 내려주는 방식을 사용할 일은 거의 없습니다.
문자가 아니라 데이터를 내놓으라고 할 때 API를 많이 사용합니다. HelloController에 추가합니다.
@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;
}
}
처음으로 문자가 아닌 객체를 넘겼습니다. 이 방식을 API 방식이라고 부릅니다.
@ResponseBody 를 사용하고, 객체를 반환하면 객체가 JSON으로 변환됩니다.