ResponseEntity
는 Spring Framework에서 사용되는 클래스로, HTTP 응답(Response)을 보다 세밀하게 제어하기 위해 사용됩니다. 이를 통해 응답 상태 코드, 응답 헤더, 그리고 응답 본문(Body)를 모두 설정할 수 있습니다. 일반적으로 REST API 개발 시 주로 사용됩니다.
ResponseEntity
는 단순한 응답 데이터뿐만 아니라, HTTP 응답의 세부 사항을 설정하고 전달할 수 있는 유연한 방법을 제공합니다.
ResponseEntity
의 주요 구성 요소
- 응답 본문(Body): 실제로 클라이언트에게 전달되는 데이터입니다. JSON, XML, 문자열, 객체 등 다양한 형태로 전달할 수 있습니다.
- 응답 헤더(Headers): 클라이언트에게 추가 정보를 제공하는 메타데이터입니다. 예를 들어, 응답 데이터의 콘텐츠 타입이나 캐싱 정보 등을 담을 수 있습니다.
- 상태 코드(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
의 다양한 사용 방법
단순 응답
@GetMapping("/simple") public ResponseEntity<String> getSimple() { return ResponseEntity.ok("Simple response"); }
- 이 예시는 상태 코드 200과 함께
"Simple response"
라는 본문을 반환합니다.
- 이 예시는 상태 코드 200과 함께
상태 코드 설정
@GetMapping("/error") public ResponseEntity<String> getError() { return new ResponseEntity<>("Error occurred", HttpStatus.BAD_REQUEST); }
- 이 경우 상태 코드 400(Bad Request)와 함께
"Error occurred"
라는 응답 본문이 반환됩니다.
- 이 경우 상태 코드 400(Bad Request)와 함께
헤더 추가
@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 |