..

ResponseEntity: HTTP 응답을 세밀하게 제어하기

1. ResponseEntity란?

ResponseEntity는 Spring Framework에서 HTTP 응답의 전체 내용(상태 코드, 헤더, 바디)을 나타내는 클래스입니다. 이를 통해 컨트롤러에서 클라이언트에게 보낼 응답을 프로그래밍 방식으로 정교하게 구성할 수 있습니다.

2. 왜 사용하는가?

단순히 객체를 반환하는 방식과 달리, ResponseEntity를 사용하면 상황에 맞는 HTTP 상태 코드(Status Code)를 직접 지정할 수 있습니다.

  • 예시: 사용자가 요청한 리소스가 없을 때 단순히 빈 리스트를 보내는 대신, 404 Not Found 혹은 204 No Content 상태 코드를 명확히 전달하여 클라이언트가 적절한 대응을 할 수 있게 합니다.

3. 활용 예제

@GetMapping("/messages/{userId}")
public ResponseEntity<List<Message>> getMessages(@PathVariable("userId") long userId) {
    List<Message> messageList = messageService.getByUserId(userId);

    if (messageList.isEmpty()) {
        // 데이터가 없을 때 204 No Content 반환
        return ResponseEntity.noContent().build();
    }
    
    // 성공 시 데이터와 함께 200 OK 반환
    return ResponseEntity.ok(messageList);
}

new ResponseEntity<>(...) 생성자 방식보다는 스타일리시하고 가독성이 좋은 Builder 패턴(ResponseEntity.ok().body(...)) 방식을 사용하는 것이 현대적인 모던 자바 개발 권장 사항입니다.