[Spring] ResponseEntity

DevHwan·2022년 11월 30일
0

1. ResponseEntity란?

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가 필요없거나 하는 응답이라면 별도의 클래스를 사용하는 것도 방법이다.

profile
달리기 시작한 치타

0개의 댓글