Spring 개발에서 이야기하는 API 방식이란, JSON 데이터 구조 포멧을 이용하여 클라이언트에게 데이터를 전달하는 방식이다.
@ResponseBody란?
이제 API 방식을 사용하여 helloController를 발전시켜보자.
static class Hello {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
@ResponseBody를 붙여주고@GetMapping으로 url과 연결하고, @RequestParam을 통해 url에 변수의 정보를 받도록 한다. setName을 통해 hello 객체의 변수 name에 대입한다.@GetMapping("hello-api")
@ResponseBody
public Hello helloAPI(@RequestParam("name") String nameValue){
Hello hello = new Hello();
hello.setName(nameValue);
return hello;
}

웹브라우저에서 localhost:8080/hello-api를 요청히면 tomcat 서버에서 hello-api 요청을 spring에게 전달한다.
spring은 Controller에 hello-api가 mapping되었는지 확인한다.
이 때, @ResponseBody 어노테이션이 붙어있지 않다면, viewResolver에게 전달해 template engine이 html로 변환하였을 것이다.
@ResponseBody 어노테이션이 붙어있고, hello 객체를 반환할 것이기 때문에 JSON 방식으로 데이터를 만들어서 반환한다.
helloController에서 메서드가 실행되어 hello 객체를 넘기면 HttpMessageConverter가 작동하는데, 이 때 단순 문자열을 반환하면 StringConverter가, 객체를 반환하면 JsonConverter가 동작한다.
JSON 스타일로 바꾼 내용을 요청환 웹 브라우저에 응답한다.