-
[Spring]API 방식Spring 2023. 3. 20. 14:01반응형
[모든 포스팅은 개인적 공부를 위해 작성된 글입니다]
<컨트롤러 내부>
@GetMapping("hello-string") @ResponseBody public String helloString(@RequestParam("name") String name){ return "hello " + name; }
<API 방식>
- 템플릿 방식과의 차이는 View 없이 데이터가 그대로 전송됨
- 객체를 json 포맷(key, value로 이루어진 방식)으로 변환하여 데이터를 클라이언트에 반환하는 방식
- 즉 템플릿 방식은 View라는 템플릿이 있고 그것을 조작하는 방식이라면 API 방식은 해당 데이터를 그대로 전송하는 것
- 소스 보기를 해도 소스가 없음
<@ResponseBody>
- http의 body부에 해당 데이터를 직접 넣어주겠다는 뜻
<json 형태로 출력하기>
@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; } }
- 위의 결과(?name=spring!!!!!!!!! 넘겨줌)
- getter/setter를 사용하는 이유는 name이 private이므로 외부에서 접근하기 위해 사용
<@ResponseBody 동작 원리>
- HTTP의 BODY에 문자 내용을 직접 반환
- @ResponseBody가 없으면 viewResolver에 결과를 넘기지만 @ResponseBody가 있으면 viewResolver를 거치지 않고 바로 출력 -> 만약 객체가 return 된다면 디폴트가 json 형태의 데이터로 만들어서 출력하겠다는 뜻(그래서 위의 코드의 결과가 json 형태인 것)
- @ResponseBody가 있으면 ViewResolver 대신에 HttpMessageConverter가 동작(스프링 부트에서 자동으로 이렇게 동작하도록 등록이 되어있음) -> return값이 문자인 경우 StringConveter(StringHttpMessageConverter) 가 동작하지만 객체인 경우에는 JsonConverter(MappingJackson2HttpMessageConverter)가 동작하여 json 형태로 출력
- Jackson : 객체를 json으로 바꾸어주는 라이브러리(대표적으로 Jackson과 Gson이 있음) -> 스프링은 Jackson을 기본적으로 탑재
*간단히 말해서 API 방식은 객체를 반환하는 것이라고 이해하면 됨*
<참고>
[무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의
스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., - 강의 소개 | 인프런
www.inflearn.com
반응형'Spring' 카테고리의 다른 글
[Spring]스프링 컨테이너와 스프링 빈, DI (0) 2023.03.20 [Spring]JUnit Test (0) 2023.03.20 [Spring]Model (0) 2023.03.20 [Spring]@RequestParam으로 값 받아오기 (0) 2023.03.20 [Spring]MVC와 템플릿 엔진 (0) 2023.03.20