SeouliteLab

[Java/자바] Spring @ResponseBody: HTTP 응답 데이터 직접 제어하기 본문

프로그래밍

[Java/자바] Spring @ResponseBody: HTTP 응답 데이터 직접 제어하기

Seoulite Lab 2024. 3. 12. 11:22

Spring 프레임워크에서 @ResponseBody 어노테이션은 컨트롤러 메서드가 HTTP 응답의 본문을 직접 제어할 때 사용됩니다. 이 어노테이션을 사용하면 컨트롤러 메서드에서 반환하는 객체가 HTTP 응답으로 변환되어 클라이언트에 전송됩니다. 이번 글에서는 @ResponseBody 어노테이션의 사용법과 예제 코드를 통해 자세히 알아보겠습니다.

1. 기본적인 @ResponseBody 사용법

가장 간단한 형태의 @ResponseBody 어노테이션은 컨트롤러 메서드에 적용됩니다. 이 경우에는 해당 메서드가 반환하는 객체가 HTTP 응답의 본문으로 사용됩니다.

예제 1: 기본적인 @ResponseBody 사용법

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MyController {

    @GetMapping("/hello")
    @ResponseBody
    public String hello() {
        return "Hello, World!";
    }
}

위의 예제에서는 /hello 경로로의 GET 요청을 처리하는 메서드입니다. 이 메서드는 단순한 문자열 "Hello, World!"를 반환하며, 이 문자열이 HTTP 응답의 본문으로 사용됩니다.

2. 객체를 반환하는 @ResponseBody

@ResponseBody 어노테이션은 단순한 문자열 뿐만 아니라 객체를 반환할 수도 있습니다. Spring은 반환된 객체를 적절한 형식으로 변환하여 HTTP 응답으로 전송합니다.

예제 2: 객체를 반환하는 @ResponseBody

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MyController {

    @GetMapping("/data")
    @ResponseBody
    public MyDataObject getData() {
        MyDataObject data = new MyDataObject();
        data.setName("John");
        data.setAge(30);
        return data;
    }
}

위의 예제에서는 /data 경로로의 GET 요청을 처리하는 메서드입니다. 이 메서드는 MyDataObject라는 사용자 정의 클래스의 객체를 생성하여 반환합니다. Spring은 이 객체를 JSON 형식으로 변환하여 HTTP 응답으로 전송합니다.

3. 예제 코드

다음은 @ResponseBody 어노테이션을 사용한 예제 코드입니다.

예제 1: 기본적인 @ResponseBody 사용법

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MyController {

    @GetMapping("/hello")
    @ResponseBody
    public String hello() {
        return "Hello, World!";
    }
}

예제 2: 객체를 반환하는 @ResponseBody

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MyController {

    @GetMapping("/data")
    @ResponseBody
    public MyDataObject getData() {
        MyDataObject data = new MyDataObject();
        data.setName("John");
        data.set

Age(30);
        return data;
    }
}

4. 결론

이상으로 Spring의 @ResponseBody 어노테이션에 대한 자세한 설명과 예제 코드를 살펴보았습니다. @ResponseBody 어노테이션을 사용하여 컨트롤러 메서드에서 HTTP 응답 데이터를 직접 제어할 수 있습니다.