본문 바로가기

Spring/Spring Web MVC

ResponseEntity란?

반응형

 

docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/http/ResponseEntity.html

 

ResponseEntity (Spring Framework 5.3.5 API)

Extension of HttpEntity that adds an HttpStatus status code. Used in RestTemplate as well as in @Controller methods. In RestTemplate, this class is returned by getForEntity() and exchange(): ResponseEntity entity = template.getForEntity("https://example.co

docs.spring.io

말 그대로 "응답 독립체", 사실 독립체라는 말이 어색해서 그렇지 응답 자체의 독립된 값이나 표현 형태라고 생각하면 된다.

Spring Framework에서 제공하는 클래스인 HttpEntity<T>를 상속받고 있으며, RestTemplate 및 @Controller 메서드에 사용하고 있다.

또란 HttpEntity 클래스는 HTTP 요청(Request) 또는 응답(Response)에 해당하는 HttpHeader와 HttpBody를 포함하는 클래스이다.

docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/http/HttpEntity.html#field.summary

 

HttpEntity (Spring Framework 5.3.5 API)

Represents an HTTP request or response entity, consisting of headers and body. Typically used in combination with the RestTemplate, like so: HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.TEXT_PLAIN); HttpEntity entity = new Http

docs.spring.io

public class HttpEntity<T> {
    public static final HttpEntity<?> EMPTY = new HttpEntity();
    private final HttpHeaders headers;
    private final T body;
    ...
}

HttpEntity 클래스를 상속받아 구현한 클래스가 RequestEntity, ResponseEntity 클래스이다. 따라서 ResponseEntity는 사용자의 HttpRequest에 대한 응답 데이터를 포함하는 클래스이다. 따라서 HttpStatus, HttpHeaders, HttpBody를 포함한다. 

 

RestTemplate 클래스에서 getForEntity()와 exchange() 메소드의 응답 객체로도 사용하고 있다.

 ResponseEntity<String> entity = template.getForEntity("https://example.com", String.class);
 String body = entity.getBody();
 MediaType contentType = entity.getHeaders().getContentType();
 HttpStatus statusCode = entity.getStatusCode();

 

Spring MVC의 @Controller 메소드를 사용할 때에는 아래와 같이 사용 가능하다.

 @RequestMapping("/handle")
 public ResponseEntity<String> handle() {
   URI location = ...;
   HttpHeaders responseHeaders = new HttpHeaders();
   responseHeaders.setLocation(location);
   responseHeaders.set("MyResponseHeader", "MyValue");
   return new ResponseEntity<String>("Hello World", responseHeaders, HttpStatus.CREATED);
 }

ResponseEntity 객체 자체를 리턴 밸류로 두는 것이다.

아니면 Builder 패턴으로도 사용 가능하다.

@RequestMapping("/handle") 
public ResponseEntity<String> handle() 
{ 
	URI location = ...;
    return ResponseEntity.created(location).header("MyResponseHeader", "MyValue").body("Hello World"); 
}

ResponseEntity는 StatusField를 가지고 있기 때문에 상태코드는 필수적으로 포함해줘야 한다.

참고: 

a1010100z.tistory.com/106

 

[Spring] ResponseEntity는 왜 쓰는 것이며 어떻게 쓰는걸까?

기존 내 개인 프로젝트 코드의 RestController 반환값은 모두 Object 타입이었다. 하지만, 일반적인 API는 반환하는 리소스에 Value만 있지 않다는 것을 모두 알고 있을 것이다. 당장 생각나는 것으로는

a1010100z.tistory.com

devlog-wjdrbs96.tistory.com/182

 

[Spring Boot] ResponseEntity란 무엇인가?

먼저 REST API가 무엇인지는 아래 블로그를 먼저 잘 읽어보자. https://meetup.toast.com/posts/92 REST API 제대로 알고 사용하기 : TOAST Meetup REST API 제대로 알고 사용하기 meetup.toast.com 1. ResponseEn..

devlog-wjdrbs96.tistory.com

 

반응형

'Spring > Spring Web MVC' 카테고리의 다른 글

Apache2와 httpd  (0) 2021.06.09
HttpMessageConverters  (0) 2021.03.28
URI 패턴  (1) 2021.03.03
Spring RestTemplate  (0) 2021.02.25
RESTful API  (0) 2021.02.25