@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 구현 시 클라이언트와 서버 간의 데이터 교환을 효율적으로 처리할 수 있게 해줍니다.