<aside> 💡 @RestController, @ResponseBody, ResponseEntity, CORS
</aside>
보통 레거시 프로젝트에서의 경우 Controller 단을 Bean으로 등록하기 위해서는 Controller 어노테이션을 Class 최상단에 선언하였다.
Boot에서는 대신에 RestController 어노테이션을 선언한다.
@RestController 란?
@Controller + @ResponseBody 를 합쳐놓은 어노테이션
@ResponseBody를 포함한 컨트롤러로 응답 body에 담긴 데이터는 Spring Boot에서 기본적으로 제공하는 MappingJackson2HttpMessageConverter
가 내부적으로 ObjectMapper를 활용하여 UTF-8 인코딩 타입 및 application/json MIME
과 json 문자열로 반환한다.
@ResponseEntity란?
응답으로 변환 될 정보를 모두 담은 요소들을 객체로 만들어서 반환해준다.
ResponseEntity를 사용할 때, 생성자 대신 Builder 사용을 권장함
ResponseEntity의 body 메소드를 통해서 Response 객체의 body에 담기는 ResponseDto는 Json 문자열이 됨
public ResponseEntity<ResponseDTO> login(@RequestBody MemberDTO memberDTO) {
return ResponseEntity
.ok()
.body(new ResponseDTO(HttpStatus.OK, "로그인 성공", authService.login(memberDTO)));
}