일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- post
- Til
- 뇌정리
- 서평
- 스터디
- Python
- 코드숨
- 2020년 제4회 정보처리기사 필기 문제 분석
- 회고
- 성적프로그램
- java
- 미니프로젝트
- Real MySQL
- 항해99
- jsp
- 주간회고
- 책리뷰
- 2020년 일정
- hackerrank
- 정보처리기사
- 2020년 정보처리기사 4회
- 필기
- 함수형 코딩
- sqldeveloper
- LeetCode
- If
- Jackson
- algorithms
- 알고리즘
- git
- Today
- Total
조컴퓨터
ResponseEntity 본문
ResponseEntity 란?
Spring Framework 에서 제공하는 클래스 중 HttpEntity 라는 클래스가 존재한다. 이것은 HTTP 요청(Request) 또는 응답(Response) 에 해당하는 HttpHeader 와 HttpBody 를 포함하는 클래스이다.
public class RequestEntity<T> extends HttpEntity<T>
public class ResponseEntity<T> extends HttpEntity<T>
HttpEntity 클래스를 상속받아 구현한 클래스가 RequestEntity 와 ResponseEntity 클래스이다. ResponseEntity 는 HttpStatus, HttpHeaders, HttpBody 의 전체 HTTP 응답을 나타낸다.
ResponseEntity 의 구조를 보면, 다음과 같이 Status 만 필드 값으로 가지고 있다.
public class ResponseEntity<T> extends HttpEntity<T> {
private final Object status;
}
이는 ResponseEntity 에서 직접적으로 Status Code 를 지정할 수 있다는 것을 의미한다. 나머지 부분은 HttpEntity 에 구현이 되어 있는데, 이는 RequstEntity 와 여러 설정들을 공유하기 때문이다. 다음은 HttpEntity 의 구현 부분이다.
public class HttpEntity<T> {
/**
* The empty {@code HttpEntity}, with no body or headers.
*/
public static final HttpEntity<?> EMPTY = new HttpEntity<>();
private final HttpHeaders headers;
@Nullable
private final T body;
}
이와 같이 ResponseEntity 는 HttpEntity 를 상속하여 구현이 된다. HttpEntity 에서는 Generic 타입으로 Body 가 될 필드값을 가질 수가 있다. Generic 타입으로 인하여 바깥에서 Wrapping 될 타입을 지정할 수가 있다. Wrapping 된 객체들은 자동으로 HTTP 규격에서 Body 에 들어갈 수 있도록 변환이 된다. 또한, 필드 타입으로 HttpHeaders 를 가지고 있는데, 이는 ResponseBody 와 다르게 객체 안에서 Header 를 설정해 줄 수 있음을 암시한다.
@GetMapping("/response-body-string-v2")
public ResponseEntity<String> responseBodyV2() {
return new ResponseEntity<>("ok", HttpStatus.OK);
}
@GetMapping("/response-body-json-v1")
public ResponseEntity<HelloData> responseBodyJsonV1() {
HelloData helloData = new HelloData();
helloData.setUsername("userA");
helloData.setAge(20);
return new ResponseEntity<>(helloData, HttpStatus.OK);
}
Spring 에서 다음과 같이 HTTP 응답으로 반환할 메서드를 만들게 되었다. 이때, 타입은 ResponseEntity<반환할 타입> 으로 지정한다.
참고)
1. ResponseEntity - Spring Boot에서 Response를 만들자 (techcourse.co.kr)
ResponseEntity - Spring Boot에서 Response를 만들자
웹 서비스에서는 많은 정보를 송수신하게 됩니다. 각각의 다른 웹 서비스들이 대화하려면, 서로 정해진 약속에 맞게 데이터를 가공해서 보내야합니다. 보내는 요청 및 데이터의 형식을 우리는 H
tecoble.techcourse.co.kr
2. 자바 [JAVA] - 제네릭(Generic)의 이해 (tistory.com)
자바 [JAVA] - 제네릭(Generic)의 이해
정적언어(C, C++, C#, Java)을 다뤄보신 분이라면 제네릭(Generic)에 대해 잘 알지는 못하더라도 한 번쯤은 들어봤을 것이다. 특히 자료구조 같이 구조체를 직접 만들어 사용할 때 많이 쓰이기도 하고
st-lab.tistory.com
'공부 > Spring' 카테고리의 다른 글
프로젝트 생성과 로깅, 요청 매핑 (0) | 2022.01.28 |
---|---|
#스프링 MVC - 구조 이해 (0) | 2022.01.27 |
#MVC 프레임워크 만들기 - 유연한 컨트롤러 - v5 (0) | 2022.01.27 |
#MVC 프레임워크 만들기 - v1, v2, v3, v4 (0) | 2022.01.27 |
MVC 패턴 (0) | 2022.01.26 |