반응형
ResponseEntity
먼저 Spring framework에 HttpEntity
라는 클래스가 존재한다.
이 클래스는 HTTP 요청(request)이나 응답(response)에 해당하는 HttpHeader와 HttpBody를 포함하는 클래스이다.
public class HttpEntity<T> {
private final HttpHeaders = headers;
@Nullable
private final T body;
}
public class RequestEntity<T> extends HttpEntity<T>
public class ResponseEntity<T> extends HttpEntity<T>
RequestEntity와 ResponseEntity는 이렇게 HttpEntity 클래스를 상속받아 구현한 클래스이다.
ResponseEntity
는 사용자의 HttpRequest에 대한 응답 데이터를 포함하는 클래스이다. 따라서, HttpStatus, HttpHeaders, HttpBody를 포함한다.
ResponseEntity
의 생성자는 this()를 통해서 매개변수가 3개인 생성자로 들어간다.
public ResponseEntity(HttpStatus status) {
this(null, null, status);
}
public ResponseEntity(@Nullable T body, HttpStatus status) {
this(body, null, status);
}
또한 상태코드(Status), 헤더(headers), 응답데이터(ResponseData)를 담는 생성자도 존재한다.
public class ResponseEntity<T> extends HttpEntity<T> {
public ResponseEntity(@Nullabe T body, @Nullable MultiValueMap<String, String> headers,
HttpStatus status) {
super(body, headers);
Assert.notNull(status, "HttpStatus must not be null");
this.status = status;
}
}
클라이언트에게 응답을 보내는 예제를 만들어보자.
@RestController
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserController {
private final UserService userservice;
@GetMapping("/api/user/{id}")
public ResponseEntity<Message> findById(@PathVariable int id) {
User user = userservice.findById(id);
Message message = new Message();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(new MeidaType("application", "json", Charset.forName("UTF-8")));
message.setStatus(StatusEnum.OK);
message.setMessage("성공했어요");
message.setData(user);
return new ResponseEntity<>(message, headers, HttpStatus.OK);
}
}
REST API 개발 시 ResponseEntity의 값(헤더, 상태코드)들을 적절히 활용해보자.
반응형
'웹 프로그래밍 > [ Spring Boot ]' 카테고리의 다른 글
[ SpringBoot ] 08. Method Lookup Injection In Spring (0) | 2021.10.18 |
---|---|
[ SpringBoot ] 07. RestTemplate을 알아보자 (0) | 2021.10.12 |
[ SpringBoot ] 05. RestController가 뭐죠? (0) | 2021.10.12 |
[ SpringBoot ] 04. Lombok 라이브러리 (0) | 2021.10.12 |
[ SpringBoot ] 03. Spring의 Bean Scope를 알아보자 (0) | 2021.10.12 |