ResponseEntity

bird.j·2021년 4월 16일
0

SpringBoot

목록 보기
13/22

우선 RestController와 Controller의 차이점을 짚고 넘어가자.

💡 Controller vs RestController


이 둘의 가장 큰 차이점은 HTTP Response Body가 생성되는 방식이다.

📌 Controller

  • view기술을 사용하고
  • 주로 view(화면)를 return한다.

📌 Restful 웹서비스 Controller(RestController)는

  • 객체를 반환하기만 하면 객체 데이터는 Json형식의 HTTP응답을 직접 작성한다.
  • Data를 return하는 것이 주 용도이다.

그러나 Controller에서 @ResponseBody 어노테이션을 사용하면 view를 return하지 않고 Controller에서 직접 Data를 return할 수 있다.

@ResponseBody 를 사용하면, Spring은 HTTP응답에 리턴 값을 자동으로 변환해준다. 대신 이 어노테이션을 controller 클래스의 각 메서드에 작성해줘야한다.

@RestController 어노테이션을 사용하면 컨트롤러 클래스의 각 메서드마다 @ResponseBody를 추가할 필요가 없고 모든 메서드는 @ResponseBody 어노테이션이 기본으로 작동이 된다.

🎈 정리

  • @Controller는 주로 뷰(화면)를 리턴할 때 주로 쓰인다.
    • data를 return하고 싶다면 각 메서드에 @ResponseBody를 붙여준다.
  • @RestController는 data를 리턴할 때 쓰인다.(@ResponseBody 붙일 필요 없음.)



그렇다면 ResponseEntity는 무엇일까?

💡 ResponseEntity


사용 이유

@RestController는 별도의 view(화면)를 제공하지 않는 형태로 서비스를 실행하기 때문에 때로 결과데이터가 예외적인 상황에서 문제가 발생할 수 있다.

@ResponseEntity는 개발자가 직접 결과 데이터와 HTTP 상태 코드를 직접 제어할 수 있는 클래스로, 개발자는 404나 500과 같은 HTTP상태 코드를 전송하고 싶은 데이터와 함께 전송할 수 있기 때문에 좀 더 세밀한 제어가 필요한 경우 사용할 수 있다.



참고 | [Spring]ResponseEntity

0개의 댓글