[Spring Boot] ResponseEntity

김광일·2024년 10월 8일

SpringBoot

목록 보기
18/19
post-thumbnail

[1] ResponseEntity란?

: Spring Framework에서 HTTP 요청에 대한 응답을 캡슐화하여 제공하는 객체.

  • HTTP 상태 코드, 헤더, 바디를 모두 포함할 수 있다.
    -> 이를 통해 클라이언트에게 더 세밀한 제어와 정보를 제공할 수 있다는 것이 특징.

[2] 특징

  • HTTP 상태 코드
    : ResponseEntity는 HttpStatus를 통해 응답 상태 코드를 명시할 수 있다.
    • 예를 들어, 200(OK), 404(NOT FOUND) 같은 코드들을 지정할 수 있다.
  • 응답 바디
    : 제네릭 타입 <T>를 사용하여 응답 바디에 원하는 데이터를 담을 수 있다.
  • 헤더
    : 응답에 필요한 HTTP 헤더도 함께 설정할 수 있습니다.

[3] 사용 형태

@PostMapping("/example")
public ResponseEntity<String> example() {
    String responseBody = "Hello, world!";
    return new ResponseEntity<>(responseBody, HttpStatus.OK);
}

: 위 코드에서는 ResponseEntity<String>을 통해 문자열 응답과 함께 HTTP 상태 코드 200(OK)을 반환한다.

[4] 예시

1) Spring (백)

(1) RestController
@PostMapping("/example")
public ResponseEntity<ExampleResponseDto> example() {
    ExampleResponseDto responseDto = new ExampleResponseDto("Hello, world!", 123);
    return new ResponseEntity<>(responseDto, HttpStatus.OK);
}
(2) DTO Class
// ExampleResponseDto 클래스
public class ExampleResponseDto {
    private String message;
    private int id;

    public ExampleResponseDto(String message, int id) {
        this.message = message;
        this.id = id;
    }

    // Getters and Setters
}

2) Axios (프론트)

import axios from 'axios';

axios.post('/example')
  .then(response => {
    console.log(response.status);    // 200
    console.log(response.data);      // { message: 'Hello, world!', id: 123 }
  })
  .catch(error => {
    console.error(error);
  });

3) 프론트에서의 응답 객체

{
  "data": {
    "message": "Hello, world!",
    "id": 123
  },
  "status": 200,
  "statusText": "OK",
  "headers": {
    "content-type": "application/json"
  },
  "config": { ... },
  "request": { ... }
}

4) 전체 흐름 요약

  1. Spring 백엔드에서 ResponseEntity로 응답을 보낸다.
  2. 프론트엔드에서 Axios 같은 라이브러리로 HTTP 요청을 보내고 응답을 받는다.
  3. 응답 객체에서 필요한 데이터(response.data)와 상태 코드(response.status)를 사용하여 UI나 로직을 처리한다.

[5] ResponseEntity를 쓰는 가장 큰 이유

: ResponseEntity를 사용하는 가장 큰 이유는 HTTP 응답에 대한 세밀한 제어를 제공하기 때문이다. 이를 통해 상태 코드, 헤더, 바디를 모두 명확하게 설정할 수 있다.

1) HTTP 상태 코드 제어

: ResponseEntity를 사용하여 HTTP 상태 코드를 명시적으로 사용할 수 있는 것이 가장 큰 이유라고 볼 수 있다.

  • 예를 들어 성공 시 200 Ok를 보내고, 잘못된 요청 시 400 Bad Request를 보내며, 서버 에러 시 500 Internal Server Error 등 다양한 상황에 맞는 상태 코드를 지정할 수 있다.
return new ResponseEntity<>("해당 리소스를 찾을 수 없습니다.", HttpStatus.NOT_FOUND);

: 이는 응답 body에 사용자 정의 메세지를 담았고, 상태 코드를 404로 지정했다.


[6] summary

  1. ResponseEntity란?
    : Spring에서 HTTP 응답을 캡슐화하는 객체로, 상태 코드, 헤더, 바디를 포함하여 클라이언트에 응답을 보냄.

  2. 특징

  • HTTP 상태 코드: 200, 404 등 다양한 상태 코드를 설정 가능.
  • 응답 바디: 제네릭 타입으로 데이터 전달.
  • 헤더: 필요한 HTTP 헤더 설정 가능.
  1. 사용 이유
  • HTTP 응답 제어: 상태 코드, 바디, 헤더를 명시적으로 설정해 세밀한 제어가 가능.
profile
안녕하세요, 사용자들의 문제 해결을 중심으로 하는 프론트엔드 개발자입니다. 티스토리로 전환했어요 : https://pangil-log.tistory.com

0개의 댓글