본문 바로가기
Spring Framework

ResponseEntity

by xogns93 2024. 10. 14.

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.08