[스프링 입문] 정리노트 - 2
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강의
시작
ReponseBody 데코레이터 응용
전 챕터까지는 API를 요청하면 페이지를 렌더링하여 사용자에게 제공했습니다. 이번에는 http통신의 body데이터만을 응답으로 내보내는 API를 만들어보도록 하겠습니다.
다음과 같이 API를 추가합니다.
java
@GetMapping("hello-string")
@ResponseBody // http 통신에서 body의 응답 데이터를 직접 넘겨줄때 템플릿 엔진과 차이점은 body만을 제공하는것이다.
public String helloString(@RequestParam("name") String name) {
return "hello " + name;
}
ReponseBody
는 http 통신에서 body의 응답 데이터를 직접 넘겨줄때 body데이터를 응답으로 제공합니다.
Json 데이터 넘겨주기
Hello
라는 클래스를 생성하고 새로운 api를 생성하고 해당 api에서 인스턴스화하여 객체에 이름을 추가해 리턴해봅시다.
java
@GetMapping("hello-api")
@ResponseBody
public Hello helloApi(@RequestParam("name") String name) {
// command + shift + enter 시 세미콜론등 귀찮은 작업을 자동으로 수행해준다.
Hello hello = new Hello();
hello.setName(name);
return hello;
}
static class Hello {
private String name;
// command + N 를 이용해 Generate 옵션으로
// 쉽게 멤버변수의 getter setter를 추가할 수 있습니다.
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
다음과 같이 JSON 형태로 사용자에게 제공됩니다.
ReponseBody
데코레이터를 적용한 api에 객체를 return하면, HttpMessageConverter
에서 이를 감지합니다. 이때 객체를 응답한다면 JsonConverter
가 Json
포맷으로 변경하여 응답으로 내보냅니다.
이외에 객체를 Json
데이터로 포맷해주는 유명한 라이브러리는 Jackson2
이 있습니다. Spring
이 이 라이브러리를 이용하는것입니다.