일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
Tags
- 데이터베이스
- 자료구조
- 네트워크
- 갱신 이상
- 정규화
- Redis
- ocp
- 삭제 이상
- 3-way handshaking
- 비관적 락
- 낙관적 락
- 삽입 이상
- MSA
- buildSrc
- 자바
- gatway
- 캐시 오염
- HTTP
- AWS
- Kotlin
- java
- 스레드 풀
- Kafka
- null
- 페이지네이션
- DB
- well-know port
- Spring
- Dirty Checking
- JPA
Archives
- Today
- Total
어 나 갱수.
[Spring Boot] ResponseEntity를 왜 사용하나요 ? 😀 본문
728x90
ResponseEntity란
스프링에서 제공하는 ResponseEntity는 개발자가 직접 반환 데이터와 상태코드를 제어할 수 있는 클래스입니다.
ResponseEntity의 구조를 보면 HttpEntity의 상속을 받고 있고 Object타입의 status만 필드값으로 가지고 있습니다.
ResponseEntity는 사용자의 HttpRequest에 대한 응답 데이터를 포함하는 클래스이다.
따라서, HttpStatus, HttpHeader, HttpBody를 포함합니다.
이 말은 ResponseEntity의 가장 큰 특징 중 하나인 상태코드를 직접 제어할 수 있다는 의미입니다.
ResponseEntity 객체
ResponseEntity : HTTP 응답을 만들기 위한 객체
구조
- HTTP Body
payload (실질적으로 반환되는 데이터) - HTTP Headers
요청 혹은 응답에 대한 요구사항 - HTTP Status
반환에 대한 상태코드
이렇게 ResponseEntity를 사용하게 되면 결과값, 헤더값, 상태코드를 모두 프론트에 한 번에 보내줄 수 있습니다.
사용방법
그럼 Spring에서는 ResponseEntity를 어떻게 사용할까 ? 굉장히 간단합니다.
ResponseEntity를 보면 이미 생성자가 다양하게 작성되어 있어 status 값만 넣거나, body만 넣어도 ResponseEntity에서 알아서 생성자를 만들어줍니다.
생성자를 통한 ResponseEntity
@GetMapping("profile")
fun queryProfile(): ResponseEntity<ProfileHttpResponse> {
val profileData = queryAccountProfileUseCase.execute()
val responseData = accountDataMapper.toResponse(profileData)
return ResponseEntity(responseData, HttpStatus.OK)
}
Builder를 통한 ResponseEntity
ResponseEntity를 사용할때는 생성자보다는 Builder방식을 권장하고 있습니다.
그 이유는 상태코드를 넣을때, 잘못된 숫자를 넣는 실수를 할 수 있기 때문입니다.
@GetMapping("profile")
fun queryProfile(): ResponseEntity<ProfileHttpResponse> =
queryAccountProfileUseCase.execute()
.let { ResponseEntity.ok(accountDataMapper.toResponse(it)) }
728x90
'Spring' 카테고리의 다른 글
[Spring] Spring Cloud Gateway RewritePath 경로 문제 (0) | 2024.04.29 |
---|---|
[Spring] SpringSecurity 6.1에서 SecurityConfig 마이그레이션 (0) | 2024.04.28 |
[Spring] 싱글톤 패턴 🐶 (0) | 2024.02.06 |
[JPA] JPA 영속성 컨텍스트 🤫 (6) | 2023.12.03 |
[Spring] @Bean과 @Component의 차이 👏 (1) | 2023.11.13 |