이제 API에 대해 알아보도록 하자.
API란 Application Programing Interface로, 쉽게 말해 어떠한 응용프로그램에서 데이터를 주고받기 위한 방법을 의미한다.
HelloController 파일에
위의 코드를 추가로 작성해준다.
@ResponseBody 는 http 프로토콜의 body 를 의미하고, 위의 코드는 이 body 에다가 return 하는 내용을 직접 넣어주겠다는 의미이다. 템플릿 엔진과의 차이점은 View 같은 것이 있는 것이 아니라 그냥 문자열 그대로가 return 된다는 것이다. localhost:8080/hello-string?name=spring! 을 입력해주면
위와 같은 창이 뜨고, 페이지 소스를 확인해보면
HTML 이 아닌 return 해준 문자열 그대로가 return된 것을 확인할 수 있다.
이제 위와 같이 단순 문자열을 return 하는 것이 아니라 데이터를 return 하는 경우를 한번 알아보자.
HelloController 파일에
위와 같은 코드를 작성해보자.
위의 helloApi 메소드는 여태 봐왔던 것과는 달리 이제 객체를 return 해주고 있다. localhost:8080/hello-api?name=spring! 을 쳐보면
위와 같이 Key와 Value로 이루어진 JSON 형태로 데이터가 return이 된 것을 확인할 수 있다.
위의 그림을 통해 @ResponseBody 사용 원리에 대해 자세히 알아보자.
localhost:8080/hello-api 라고 치면 내장되어있는 톰캣 서버가 이를 스프링에게 넘기게된다. 그러면 Controller 가 Mapping 되어 있는 hello-api를 찾는데 이 때 @ResponseBody 라는 Annotation 이 붙어있는 것을 확인하면 스프링은 http 응답에 이 데이터를 그대로 넘겨야 한다는 것을 알게 된다.
이 때 데이터가 단순 문자열 이런 것이 아닌 객체로 return 되면 디폴트로 JSON 방식으로 데이터를 만들어서 http 응답에 return 해주게된다.
객체를 넘기면 HttpMessageConverter 라는 것이 동작을 하게 된다. return 되는 것이 문자열이면 StringConverter가, 객체면 JsonConverter가 동작을 하여 알맞은 형태로 데이터를 변환해준다.
'BackEnd > Spring Boot' 카테고리의 다른 글
회원 Repository 테스트 케이스 작성하기 (2) | 2022.10.08 |
---|---|
회원 Domain과 Repository 만들기 (0) | 2022.10.07 |
MVC 와 템플릿 엔진 (0) | 2022.10.01 |
정적 컨텐츠 (0) | 2022.10.01 |
콘솔에서 Build 하고 실행하기 (0) | 2022.09.30 |