Spring 에서 기본적으로 제공하는 클래스 중 하나이다. httpEntity 클래스를 상속하고 있다.
public class HttpEntity<T> {
/**
* The empty {@codeHttpEntity}, with no body or headers.
*/
public static final HttpEntity<?>EMPTY= new HttpEntity<>();
private final HttpHeaders headers;
@Nullable
private final T body;
``` 수 많은 내용 ```
}
상속받았기 때문에 당연히 header와 body를 가지고 있고 추가적으로 status를 갖고 있는 Response 클래스이다.
public class ResponseEntity<T> extends HttpEntity<T> {
private final Object status;
}
해당 클래스는 HttpRequset 에 대한 응답을 Spring 프레임워크에서 표준으로 제공하는 클래스이다.
ResponseEntity 표준 생성자
public ResponseEntity(HttpStatus status) {
this(null, null, status);
}
/**
* Create a {@codeResponseEntity} with a body and status code.
*@parambodythe entity body
*@paramstatusthe status code
*/
public ResponseEntity(@Nullable T body, HttpStatus status) {
this(body, null, status);
}
/**
* Create a {@codeResponseEntity} with headers and a status code.
*@paramheadersthe entity headers
*@paramstatusthe status code
*/
public ResponseEntity(MultiValueMap<String, String> headers, HttpStatus status) {
this(null, headers, status);
}
/**
* Create a {@codeResponseEntity} with a body, headers, and a status code.
*@parambodythe entity body
*@paramheadersthe entity headers
*@paramstatusthe status code
*/
public ResponseEntity(@Nullable T body, @Nullable MultiValueMap<String, String> headers, HttpStatus status) {
this(body, headers, (Object) status);
}
/**
* Create a {@codeResponseEntity} with a body, headers, and a raw status code.
*@parambodythe entity body
*@paramheadersthe entity headers
*@paramrawStatusthe status code value
*@since5.3.2
*/
public ResponseEntity(@Nullable T body, @Nullable MultiValueMap<String, String> headers, int rawStatus) {
this(body, headers, (Object) rawStatus);
}
/**
* Private constructor.
*/
private ResponseEntity(@Nullable T body, @Nullable MultiValueMap<String, String> headers, Object status) {
super(body, headers);
Assert.notNull(status, "HttpStatus must not be null");
this.status = status;
}
반환되는 값으로는 보통 header, status , body가 포함되기 때문에 해당 클래스를 사용한다면 반환 클래스를 생성하는데 소요하는 작업을 줄일 수 있다.
만약 Message를 반환하고 싶다면 Status를 통해 반환할 수 있다. Status는 HttpStatus 라는 Spring에서 제공하는 표준 클래스인데 status가 필드로 message를 가지고 있다. 사용자가 Response나 Status를 Custom해서 사용하고 싶다면 이를 상속받아서 구현하는 것이 가장 효율적일 것이다. → 만약 Header가 필요없거나 하는 응답이라면 별도의 클래스를 사용하는 것도 방법이다.