[Spring] API
1. API
- 템플릿 엔진과의 차이는 뷰없이 데이터가 그대로 요청한 클라이언트에 전달됨
- @ResponseBody를 사용하면 viewResolver를 사용하지 않음
HTTP의 Body에 문자 내용을 직접 반환(HTML BODY TAG 아님) - @ResponseBody를 사용하고 객체를 반환하는 경우 Spring에서는 기본적으로 JSON으로 변환됨
① 문자 반환
@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name") String name) {
return "hello " + name;
}
http://localhost:8080/hello-string?name=spring 로 접근 시
: "hello spring" 확인 가능
소스보기 했을 때 html 태그없이 값 그대로 확인 가능 (템플릿 엔진과의 차이)
HTTP의 BODY에 문자 내용을 직접 반환
② 객체 반환
http://localhost:8080/hello-api?name=spring
JSON 형식으로 반환됨
① 웹 브라우저에서 localhost:8080/hello-api 요청
② 내장 톰캣 서버가 요청을 받아서 Spring에 넘김
③ Spring은 먼저 컨트롤러 쪽에서 hello-api가 있는지 찾음
④ @ResponseBody가 있기 때문에 viewResolver가 아닌 StringHttpMessageConverter가 동작함
- 문자면 StringHttpMessageConverter, 객체면 MappingJackson2HttpMessageConverter가 기본으로 동작함
- byte 처리 등등 기타 여러 HttpMessageConverter가 기본으로 등록되어 있음
- 클라이언트의 HTTP Accept 해더와 서버의 컨트롤러 반환 타입 정보 둘을 조합해서 HttpMessageConverter가 선택됨
⑤ Hello 객체를 반환해야 하기 때문에 JsonConverter에 의해 name:spring으로 변환되어 웹 브라우저로 넘겨짐
참고) 객체를 json으로 바꿔주는 라이브러리
: Jackson(Spring 기본값), Gson
참고 - 인프런 무료 강의 : 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 [김영한님]
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/dashboard
[무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의
스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., - 강의 소개 | 인프런...
www.inflearn.com