카테고리 없음

ResponseBody vs ResponseEntity

최종군 2024. 11. 10. 01:43

@ResponseBody 

 

- 메서드가 반환하는 값을 HTTP 응답의 본문(body)으로 직접 전송을한다.

반환된 데이터는 HTTP 응답의 본문에 직렬화 되어 클라이언트로 전송이 된다. 

상태 코드나 HTTP 헤더를 따로 설정할 수 없다. Spring이 자동으로 기본 상태 코드

(200 OK)를 설정해준다. 

 

주로 JSON,XML 같은 데이터를 반환하는 REST API응답에서 사용이된다. 

 

비유 - 전달하고 싶은 종이에 바로 적어 편지 봉투 없이 우체통에 넣는 법을 비유한다.

@ResponseBody는 결국 편지 안 내용만을 전달하게 된다.  

 

 

ResponseEntity :

HTTP 응답의 본문(body), 상태 코드(status), 그리고 헤더(headers)를 모두 설정하여 반환할 수 있다

메서드에서 ResponseEntity<T> 객체를 반환한다. 

 

특징으로는 상태 코드와 헤더 정보를 세밀하게 조정할 수 있다. 

ResponseEntity.ok(), ResponseEntity.status(), ResponseEntity.notFound() 등의 메서드를 사용하여 상태 코드를 설정할 수 있다.

 

주로 데이터뿐만이 아니라 HTTP 상태코드, 응답 헤더 등도 세밀하게 제어해야 하는 경우에 사용이된다 

ResponseEntity : 내용뿐만이 아니라 봉투의 외부 정보까지 세밀하게 조정하여 보낼 수 있다.

예를 들어 성공 시 200 OK, 실패 시 404 Not Found 등의 상태 코드와 함께, 추가 헤더 정보를 포함할 수 있다.