티스토리 뷰

정리 노트/Spring

@ResponseBody

eyoadgkn 2024. 4. 26. 23:16
@ResponseBody
@ResponseBody 어노테이션은 Spring MVC에서 사용되는 어노테이션으로, 메서드의 반환 값을 HTTP 응답 본문으로 직접 작성하도록 지정합니다.
일반적으로 Spring MVC 컨트롤러 메서드는 View 이름을 반환하여 해당 View를 렌더링하게 됩니다.
하지만 @ResponseBody 어노테이션을 사용하면 메서드의 반환 값 자체가 HTTP 응답 본문이 됩니다.
이 어노테이션은 주로 RESTful API를 구현할 때 사용됩니다.

RESTful API는 클라이언트와 서버 간의 데이터 교환을 위해 HTTP 프로토콜을 사용하며, 응답 본문에 직접 데이터를 담아 보내는 것이 일반적입니다.

@RestController // 이 클래스가 REST API 컨트롤러임을 나타내는 어노테이션
@RequestMapping("/api/users") // 이 컨트롤러의 기본 요청 매핑 경로
public class UserController {

    // GET 요청 처리 메서드
    @GetMapping("/{id}") // 경로 변수 {id}를 사용하는 GET 요청 매핑
    @ResponseBody // 메서드의 반환 값을 HTTP 응답 본문으로 직접 작성하도록 지정
    public User getUser(@PathVariable("id") Long userId) {
        // 사용자 정보 조회 로직
        User user = userService.getUserById(userId);
        return user; // 조회한 사용자 정보를 반환
    }

    // POST 요청 처리 메서드
    @PostMapping // POST 요청 매핑
    @ResponseBody // 메서드의 반환 값을 HTTP 응답 본문으로 직접 작성하도록 지정
    public User createUser(@RequestBody UserDto userDto) {
        // 사용자 생성 로직
        User createdUser = userService.createUser(userDto);
        return createdUser; // 생성된 사용자 정보를 반환
    }
}

Spring MVC에서 RESTful API를 구현하는 UserController 클래스입니다.

@RestController 어노테이션은 이 클래스가 REST API 컨트롤러임을 나타냅니다.
@RequestMapping("/api/users") 어노테이션은 이 컨트롤러의 기본 요청 매핑 경로를 "/api/users"로 설정합니다.

getUser() 메서드:

@GetMapping("/{id}") 어노테이션은 이 메서드가 GET 요청을 처리하며, 경로 변수 {id}를 사용함을 나타냅니다.
@ResponseBody 어노테이션은 이 메서드의 반환 값을 HTTP 응답 본문으로 직접 작성하도록 지정합니다.
메서드 내부에서는 userService.getUserById(userId) 로직을 통해 사용자 정보를 조회하고, 해당 User 객체를 반환합니다.

createUser() 메서드:

@PostMapping 어노테이션은 이 메서드가 POST 요청을 처리함을 나타냅니다.
@ResponseBody 어노테이션은 이 메서드의 반환 값을 HTTP 응답 본문으로 직접 작성하도록 지정합니다.
@RequestBody 어노테이션은 요청 본문에서 UserDto 객체를 받아 사용자 생성 로직을 수행하고, 생성된 User 객체를 반환합니다.


이와 같이 @ResponseBody 어노테이션은 메서드의 반환 값을 HTTP 응답 본문으로 직접 작성하도록 하여, RESTful API 구현 시 클라이언트와 서버 간의 데이터 교환을 효율적으로 처리할 수 있게 해줍니다.

'정리 노트 > Spring' 카테고리의 다른 글

WebMvcConfigurer  (0) 2024.05.01
@Bean  (0) 2024.04.29
Spring Project[Project]  (0) 2024.02.28
SQL2  (0) 2024.02.07
Spring Chapter17 [18-1]  (0) 2024.02.05
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/07   »
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 31
글 보관함