API
정적템플릿이 아닐 경우 두 가지 방법이 있다. Html로 내리는 방법과 데이터를 내리는 방법이다. 데이터를 내리는 방식이 API 인데 코드를 통해 살펴보자.
예제
1. 컨트롤러에 아래 내용을 추가해보자.
HelloController.java
@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam(value = "name", required = false) String name, Model model) {
return "hello" + name;
}
=> @ResponseBody 는 http에 body 부분에 데이터를 직접 넣어주겠다는 의미이다.
이전 템플릿 엔진과의 차이는 view 없이 문자가 그대로 내려간다는 점이다.
달라진 게 없어보이지만 마우스 우클릭 해서 소스보기를 클릭해보면 달라진 내용을 확인할 수 있다.
=> html이 아닌 문자열이 그대로 내려온 것을 확인할 수 있다.
예제2
실제로는 String 보다는 데이터를 내리는 경우가 많다. 예제를 통해 확인해보자.
컨트롤러에 아래 내용을 추가해보자.
HelloController.java
@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;
}
}
=> 화면에 JSON 방식으로 내려오는 것을 확인할 수 있다.
@ResponseBody 사용원리
실제로는 String 보다는 데이터를 내리는 경우가 많다. 예제를 통해 확인해보자.
- 스프링은 @ResponseBody 어노테이션이 붙어있으면, http 응답에 이 데이터를 그대로 넘긴다. 그러면 viewResolver 대신에 HttpMessageConverter 가 동작한다.
- 이 때 문자가 아닌 객체일 때 기본적으로는 JSON으로 데이터를 만들어서 http 응답을 반환한다.
- 기본 문자처리 : StringHttpMessageConverter
- 기본 객체처리 : MappingJackson2HttpMessageConverter
- 여러 HttpMessageConverter가 기본으로 등록되어 있다.
* 인프런 '스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술' 강의를 참고하여 작성했습니다.
'웹 개발 > Spring' 카테고리의 다른 글
[Spring 기본] 스프링이란? (0) | 2024.07.31 |
---|---|
[Spring 기초] AOP (0) | 2024.07.30 |
[Spring 기초] MVC와 템플릿 엔진 (0) | 2024.07.24 |
[Spring 기초] 스프링 웹 개발 기초 (0) | 2024.07.24 |
[Spring 실습] View 환경설정 (0) | 2024.07.24 |