<aside> 💡 @RestController, @ResponseBody, ResponseEntity, CORS

</aside>

@RestController

보통 레거시 프로젝트에서의 경우 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)));
	}