이숭간 공부기록
[Springboot] ResponseEntity, HttpEntity란? 본문
728x90
Class ResponseEnitty<T>
응답자체의 독립된 값이나 표현형태로, 사용자의 HttpRequest에 대한 응답 데이터를 포함하는 클래스이다.
따라서 HttpStatus, HttpHeaders, HttpBody를 포함한다.
Spring Framework에서 제공하는 클래스인 HttpEnityt<T>를 상속받으며, RestTemplate(서버와 서버간 통신을 쉽게해줌) 및 @Controller메서드에 사용하고 있다.
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();
Controller에서의 사용예
메서드의 리턴밸류로 객체자체를 사용한다.
# 헤더는 명시하지 않은 코드
return new ResponseEntity<>(
ApiResponse.response(
HttpStatusCode.OK,
HttpResponseMessage.GET_SUCCESS,
responseDto), HttpStatus.OK
);
Class HttpEntity<T>
Represents an HTTP request or response entity, consisting of headers and body.
*
* <p>Typically used in combination with the {@link org.springframework.web.client.RestTemplate},
* like so:
* <pre class="code">
* HttpHeaders headers = new HttpHeaders();
* headers.setContentType(MediaType.TEXT_PLAIN);
* HttpEntity<String> entity = new HttpEntity<String>(helloWorld, headers);
* URI location = template.postForLocation("https://example.com", entity);
* </pre>
* or
* <pre class="code">
* HttpEntity<String> entity = template.getForEntity("https://example.com", String.class);
* String body = entity.getBody();
* MediaType contentType = entity.getHeaders().getContentType();
* </pre>
* Can also be used in Spring MVC, as a return value from a @Controller method:
* <pre class="code">
* @RequestMapping("/handle")
* public HttpEntity<String> handle() {
* HttpHeaders responseHeaders = new HttpHeaders();
* responseHeaders.set("MyResponseHeader", "MyValue");
* return new HttpEntity<String>("Hello World", responseHeaders);
* }
* </pre>
HttpEntity클래스는 HTTP요청또는 응답에 해당하는 HttpHeader와 HttpBody를 포함하는 클래스다.
따라서 이 클래스는 다음과같은 생성자와 필드를 갖는다.
public class HttpEntity<T> {
public static final HttpEntity<?> EMPTY = new HttpEntity();
private final HttpHeaders headers;
private final T body;
...
}
HttpEntity 클래스를 상속받아 구현한 클래스가 RequestEntity, ResponseEntity 클래스이다.
참고 :
'공부공부 > Spring Boot' 카테고리의 다른 글
[Spring] Spring JDBC, DataSource란? (2) | 2021.07.25 |
---|---|
[Spring] @Component와 @Bean의 차이 (0) | 2021.07.14 |
[Spring] 컨트롤러 테스트하기 (0) | 2021.05.31 |
[Spring] 의존성주입(DI)이란? (0) | 2021.05.22 |
[Spring] DAO(=Repository), DTO(VO) 란? (0) | 2021.05.22 |