본문 바로가기
프레임워크(Framework)/Spring Boot

[Spring Boot] ResponseEntity

by 송기동 2024. 4. 15.
728x90

ResponseEntity

- 'HttpEntity' 를 상속받아 HTTP 응답을 나타내는 클래스

- HTTP 응답의 상태 코드와 함께 헤더(headers)와 본문(body)을 포함

('HttpEntity' 의 모든 기능을 활용할 수 있으면서도 추가적으로 HTTP 응답을 설정하고 반환할 수 있음)

  → 클라이언트에게 보다 구체적인 응답 제공, 효과적인 통신 구현

- RESTful 웹 서비스나 웹 애플리케이션 개발할 때 유용

ResponseEntity< >

- '<>' 는 제네릭 타입을 지정하는 부분

- 제네릭 타입은 컬렉션과 같은 클래스나 인터페이스를 정의할 때 사용(컴파일 시점에 타입 안정성 보장, 재사용성 높여줌)

- '<>' 안에는 반환되는 데이터의 형식을 지정

 

# ResponseEntity<?>

- '<?>' 는 와일드카드 타입을 의미

- 어떤 형식의 데이터든 응답으로 반환할 수 있음

   → 클라이언트는 응답으로 받을 데이터의 형식을 미리 알 수 없음

- 특정한 형식의 데이터를 반환하지 않을 때 유용

   → 하지만 클라이언트에서 반환된 데이터를 안전하게 다루기 어려울 수 있


# 예시

@RestController
public class ExampleController {

    @GetMapping("/example")
    public ResponseEntity<String> exampleEndpoint() {
        String responseBody = "This is an example response";
        return ResponseEntity.status(HttpStatus.OK).body(responseBody);
    }
}

// 위의 예제에서는 "/example" 엔드포인트에 대한 GET 요청에 대한 응답으로 문자열을 반환합니다.

 

@RestController
public class ExampleController {

    @GetMapping("/example")
    public ResponseEntity<MyObject> exampleEndpoint() {
        MyObject responseBody = new MyObject("example", 123);
        return ResponseEntity.status(HttpStatus.OK).body(responseBody);
    }
}

// "/example" 엔드포인트에 대한 GET 요청에 대한 응답으로 JSON 형식의 객체를 반환합니다. 
// 여기서 MyObject는 사용자가 정의한 클래스입니다.
@RestController
public class ExampleController {

    @GetMapping("/example")
    public ResponseEntity<?> exampleEndpoint(@RequestParam("id") String id) {
        if (id.equals("example")) {
            return ResponseEntity.status(HttpStatus.OK).body("Success");
        } else {
            return ResponseEntity.status(HttpStatus.NOT_FOUND).body("Not found");
        }
    }
}

// "/example" 엔드포인트에 대한 GET 요청을 처리하고, 요청된 id에 따라 성공 또는 실패를 나타내는 응답을 반환합니다. 
// 요청된 id가 "example"이면 성공 메시지를 반환하고, 그렇지 않으면 "Not found" 메시지를 반환합니다.
728x90