[Spring Boot] ResponseEntity 사용 이유, 사용 방법

2024. 9. 5. 14:32· Spring Boot
목차
  1. 0. 사전 지식
  2. 0-1. HTTP
  3. 0-2. @ResponseBody
  4. 1. ResponseEntity
  5. 3-1. ResponseEntity 사용법
  6. 3-2. ResponseEntity의 body 타입

0. 사전 지식

0-1. HTTP

  • 웹 서비스 : 정보 요청, 응답 시 HTTP 사용
  • 마찬가지로 스프링도 HTTP 사용 → 데이터 송수신
    • 직접 작성이 아닌 스프링에서 제공하는 @ResponseBody, ReseponseEntity 사용해서 응답을 빠르고 쉽게 작성 가능

 

0-2. @ResponseBody

  • HTTP 요청의 body 에는 여러 데이터가 존재함
  • 이 body의 데이터를 직렬화 해주는 어노테이션
    • 직렬화 : 현재의 데이터를 네트워크에서 송/수신 가능하도록 변경하는 것

 

1. ResponseEntity

  • 스프링 프레임워크가 제공하는 클래스
  • HttpEntity 클래스를 상속받음 (+ http 상태코드 포함)
    • HttpEntity : headers와 body로 이루어짐

⇒ 사용자의 Http Request에 대한 응답 데이터를 포함!

ResponseEntity 사용 이유 : Http 응답을 (status 포함) 디테일하게 반환하고자 할 때 사용함!!

 

📌 @ResponseBody vs ResponseEntity

- 구현체 차이만 있을 뿐 동일한 메커니즘에 의해 HTTP 응답 생성함!

- 각각의 장단점
→ @ResponseBody : 코드 작성이 깔끔해짐 / 상태코드와 헤더를 유연하게 변경 불가
→ ResponseEntity : 상태코드와 헤더를 유연하게 변경 가능 / 코드 증가

 

3-1. ResponseEntity 사용법

  • 생성자 사용 방식
return new ResponseEntity(body, headers, HttpStatus.OK);

 

  • 빌더 패턴 사용 방식
    • ResponseEntity 내부에 정적 팩토리 메서드 구현되어 있음
return ResponseEntity.status(HttpStatus.OK)
                     .headers(headers)
                     .body(body);

 

  • 상태코드만 반환
return ReponseEntity.ok().build();

 

  • body 포함
return ResponseEntity.ok(body);

 

3-2. ResponseEntity의 body 타입

  • body 타입 x
public ResponseEntity getPosts() { }

⇒ Object를 body에 담음

 

  • body 타입 : Object
public ResponseEntity<Object> getPosts() { }

⇒ 위의 코드와 기능 동일 / 명시적으로 타입을 작성해 준 것

 

  • body 타입 : 와일드 카드 사용
public ResponseEntity<?> getPosts() { }

⇒ 객체의 타입이 명확하지 않을때는 와일드카드가 Object보다 나음

 

  • body 타입 : 타입 파라미터 사용
public ResponseEntity<T> getPosts() { }

⇒ 컴파일 시점에 자동 형변환 됨 (개발자가 따로 형변환 할 필요 x!)

 

  • body 타입 : 사용자 생성 객체
public ResponseEntity<List<Post>> getPosts() { }
public ResponseEntity<Post> getPost() { }

⇒ REST API 설계 관점에서 사용자 객체를 넣어 명시적으로 작성하는 것이 가장 좋음

저작자표시 변경금지 (새창열림)

'Spring Boot' 카테고리의 다른 글

[Spring Boot] Jpa Auditing (+ BaseEntity) 로 엔티티 관련 이벤트 자동 기록하기  (2) 2024.09.07
[Spring Boot] JpaRepository 개념, 사용 방법 (쿼리 메서드, @Query, JPQL, Native Query)  (0) 2024.09.05
[Spring Boot] 스프링 트랜잭션 (@Transactional)  (0) 2024.09.05
[Spring Boot] 스프링 ChatGPT API 활용 예제 ( + postman으로 확인 )  (0) 2024.09.04
[Spring Boot] 스프링 이미지 업로드 예제 (3) - 외부 경로에 업로드  (0) 2024.09.03
  1. 0. 사전 지식
  2. 0-1. HTTP
  3. 0-2. @ResponseBody
  4. 1. ResponseEntity
  5. 3-1. ResponseEntity 사용법
  6. 3-2. ResponseEntity의 body 타입
'Spring Boot' 카테고리의 다른 글
  • [Spring Boot] Jpa Auditing (+ BaseEntity) 로 엔티티 관련 이벤트 자동 기록하기
  • [Spring Boot] JpaRepository 개념, 사용 방법 (쿼리 메서드, @Query, JPQL, Native Query)
  • [Spring Boot] 스프링 트랜잭션 (@Transactional)
  • [Spring Boot] 스프링 ChatGPT API 활용 예제 ( + postman으로 확인 )
공대생안씨
공대생안씨
전자공학과 학부생의 코딩 일기
공대생의 코딩 일기전자공학과 학부생의 코딩 일기
티스토리
|
로그인
공대생안씨
공대생의 코딩 일기
공대생안씨
글쓰기
|
관리
전체
오늘
어제
  • All Categories (153)
    • Spring Boot (46)
      • JPA (7)
      • Lombok (2)
    • Java (21)
    • DevOps (3)
      • CI,CD (8)
      • Monitoring (2)
    • Database (7)
      • MySQL (5)
      • MongoDB (1)
      • H2 (1)
    • Trouble Shooting (5)
    • FE (4)
    • IntelliJ (3)
    • Git (3)
    • Algorithm (41)

블로그 메뉴

  • 홈
  • 태그
  • Github

공지사항

인기 글

hELLO · Designed By 정상우.v4.2.2
공대생안씨
[Spring Boot] ResponseEntity 사용 이유, 사용 방법
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.