@RestController

지금까지 사용했던 태그는 @Controller이다.
@Controller의 역할은 컨트롤러를 지정해주기 위한 목적으로 사용되며 view네임을 반환시킨다.
그리고 Data 반환이 필요할 때에는 컨트롤러에 @ResponseBody 애노테이션을 붙어주었다.
((@ResponseBody 의 설명은 아래에. ))
@RestController는 이 기능들을 합친 것인데,
반환을 view네임이 아닌 데이터로 한다. (여러 데이터 타입)
그리고 이 반환을 response 바디에 담아준다.
리턴하는 객체를 ResponseEntity 라고 하는 객체에 담아주고, status랑 함께 내보낸다.
정리하자면
RESTController 와 Controller 의 차이
: 반환하는 것이 뷰네임이냐 데이터냐.
** @ResponseBody
- 매핑 메서드에 적용.
- 메서드의 리턴값이 view를 통해 출력되지 않고 HTTP Response Body 에 직접 쓰여진다.
- 이 때 쓰여지기 전, 리턴되는 데이터 타입에 따라 종류별 MessageConverter에서 변환이 이루어짐.
- view가 아닌 Data 자체를 전달하기 위한 용도이다.
** Return 데이터 타입
- String, Integer 등의 단일값
- 사용자 정의 객체
- Collection
- ResponseEntity<> 타입 (주로 이용됨**)
** Status
- ResponseEntity 에 담겨져 보내진다는 status
- headers, body 등과 함께 전송된다,
- 직접 status 코드를 지정 가능하다.
- 200(OK), 502(BAD_GATEWAY), 500(INTERNAL_SERVER_ERROR)
((오류 코드들은 400번대, 500번대 는 알아두는게 좋다고 하셨다. 언제 한 번 정리하면서 읽어야겠다 )