Spring Boot
RestController
stophyeon
2024. 1. 7. 16:27
728x90
Rest란
Rest란 자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 모든 것을 의미합니다.
자원의 상태란 Data입니다. 즉, 자원의 이름으로 Data를 요청하고 응답하는 것을 말합니다.
Controller vs RestController
지금까지 URI를 통해 자원을 이름으로 구분해 요청응답을 해왔는데 차이점이 무엇일까요
차이점은 응답형태에 있습니다. Controller 어노테이션을 사용하면 사용자에게 응답을 해주는 형태가
HTML파일의 형태입니다. 즉, 서버에서 응답을 해줄 때 서버에 저장되어있는 HTML파일을 사용자에게
꺼내주는 방식입니다. RestController는 응답의 형태가 Data뿐입니다. 즉, HTML파일이 아닌 사용자가 요청한
Data를 전달하는 것입니다.
하지만 @Controller 어노테이션도 Data를 반환할 수 있습니다. 해당 메서드에 @ResponseBody어노테이션을
선언하는 것으로 Data를 반환하는 것이 가능합니다.
@RestController는 @Controller와 @ResponseBody를 합쳐진 것입니다.
JSON이란
만약 Data를 응답으로 보낸다고 한다면 메서드에 return값으로 객체를 반환할 것입니다.
그렇다면 이렇게 보낸 객체는 바로 사용자에게 보내지는 것일까요?
만약 그렇다면 사용자는 응답으로 빈페이지에 객체의 형태와 값만 보여질 것입니다.
전송한 Data는 프론트에 보내지는 것입니다. 쉽게 말해 HTML파일에 적용됩니다.
이 때 Data를 프론트에서 가공하기 쉽게 보내는 방식이 JSON형태로 객체를 전송하는 것입니다.
JSON이란 자바 스크립트 객체 표기법으로 데이터를 쉽게 교환하고 저장하기 위한 텍스트 기반의 데이터 교환 표준 입니다. JSON의 형태는 아래와 같습니다.
{
"user" :[ {
"id" : "user1"
"password" : "1234"
"name" : "me"
},
....]
,.......
}
JSON은 Key - Value의 Map의 형태로 구성되어있습니다.
JSON에는 배열 형태도 저장이 가능합니다.
JSON형태의 요청과 응답 Mapping
그렇다면 사용자의 요청이 JSON의 형태로 온다면 어떻게 처리해야 할까요