ResponseEntity는 Spring Framework에서 사용되는 클래스로, HTTP 응답(Response)을 보다 세밀하게 제어하기 위해 사용됩니다. 이를 통해 응답 상태 코드, 응답 헤더, 그리고 응답 본문(Body)를 모두 설정할 수 있습니다. 일반적으로 REST API 개발 시 주로 사용됩니다.

ResponseEntity는 단순한 응답 데이터뿐만 아니라, HTTP 응답의 세부 사항을 설정하고 전달할 수 있는 유연한 방법을 제공합니다.

ResponseEntity의 주요 구성 요소

  1. 응답 본문(Body): 실제로 클라이언트에게 전달되는 데이터입니다. JSON, XML, 문자열, 객체 등 다양한 형태로 전달할 수 있습니다.
  2. 응답 헤더(Headers): 클라이언트에게 추가 정보를 제공하는 메타데이터입니다. 예를 들어, 응답 데이터의 콘텐츠 타입이나 캐싱 정보 등을 담을 수 있습니다.
  3. 상태 코드(Status Code): HTTP 응답 상태 코드를 나타냅니다. 성공(200 OK), 클라이언트 오류(400 Bad Request), 서버 오류(500 Internal Server Error) 등 다양한 상태 코드를 설정할 수 있습니다.

ResponseEntity 사용 예시

import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ExampleController {

    @GetMapping("/example")
    public ResponseEntity<String> getExample() {
        // 응답 본문
        String body = "Hello, World!";

        // 응답 헤더 설정
        HttpHeaders headers = new HttpHeaders();
        headers.add("Custom-Header", "CustomHeaderValue");

        // ResponseEntity로 응답 생성 (본문, 헤더, 상태 코드)
        return new ResponseEntity<>(body, headers, HttpStatus.OK);
    }
}

설명:

  • 응답 본문: "Hello, World!"라는 문자열이 클라이언트에게 전달됩니다.
  • 응답 헤더: Custom-Header라는 이름의 헤더에 "CustomHeaderValue" 값이 추가되었습니다.
  • 응답 상태 코드: 상태 코드는 200 OK로 설정되어 있습니다.

ResponseEntity의 다양한 사용 방법

  1. 단순 응답

    @GetMapping("/simple")
    public ResponseEntity<String> getSimple() {
        return ResponseEntity.ok("Simple response");
    }
    • 이 예시는 상태 코드 200과 함께 "Simple response"라는 본문을 반환합니다.
  2. 상태 코드 설정

    @GetMapping("/error")
    public ResponseEntity<String> getError() {
        return new ResponseEntity<>("Error occurred", HttpStatus.BAD_REQUEST);
    }
    • 이 경우 상태 코드 400(Bad Request)와 함께 "Error occurred"라는 응답 본문이 반환됩니다.
  3. 헤더 추가

    @GetMapping("/with-header")
    public ResponseEntity<String> getWithHeader() {
        HttpHeaders headers = new HttpHeaders();
        headers.add("Custom-Header", "Value");
        return new ResponseEntity<>("Response with header", headers, HttpStatus.OK);
    }
    • 커스텀 헤더와 함께 응답을 반환할 수 있습니다.

ResponseEntity의 장점

  • 상태 코드와 본문을 분리하여 설정할 수 있으므로, 응답을 더 유연하게 구성할 수 있습니다.
  • 헤더, 본문, 상태 코드를 모두 한 번에 설정할 수 있기 때문에, 복잡한 응답을 처리할 때 유용합니다.
  • 주로 REST API 개발에서 많이 사용되며, 클라이언트가 HTTP 응답을 명확하게 처리할 수 있게 도와줍니다.

결론

ResponseEntity는 Spring에서 HTTP 응답을 보다 세밀하게 제어하기 위한 도구입니다. 이를 사용하면 응답 상태 코드, 헤더, 본문을 모두 설정하여 클라이언트에게 전달할 수 있어, 특히 REST API 개발 시 매우 유용합니다.

'Spring Framework' 카테고리의 다른 글

콘텐츠 협상(Content Negotiation)  (0) 2024.10.15
디폴트 서블릿(Default Servlet)  (0) 2024.10.15
XMLHttpRequest(XHR) - 비동기 자바스크립트  (3) 2024.10.14
@Valid와 @Validated  (0) 2024.10.14
어노테이션 모음  (0) 2024.10.14

+ Recent posts