@RestController와 @RequestBody는 Spring Framework의 주요 애너테이션으로, 웹 애플리케이션의 RESTful API를 쉽게 구축하고 클라이언트와 서버 간의 데이터 전송을 관리하는 데 사용됩니다.@RestController
- 설명: @RestController는 Spring MVC에서 RESTful 웹 서비스의 컨트롤러를 정의할 때 사용됩니다. 이 애너테이션은@Controller와@ResponseBody를 결합한 것으로, RESTful 웹 서비스의 컨트롤러를 정의하면서 모든 메서드가 자동으로 JSON 또는 XML로 직렬화된 응답을 반환하게 합니다.
- 기능:
- @Controller: 웹 애플리케이션의 컨트롤러를 정의합니다.
- @ResponseBody: 메서드의 반환값을 HTTP 응답 본문으로 직렬화합니다. RESTful API에서는 주로 JSON 형식으로 응답을 보냅니다.
- 예제:
@RestController
@RequestMapping("/api/movies")
public class MovieController {
    @GetMapping("/{id}")
    public Movie getMovie(@PathVariable String id) {
        // 영화 정보를 반환하는 예제 메서드
        return movieService.findMovieById(id);
    }
    @PostMapping
    public Movie createMovie(@RequestBody Movie movie) {
        // 새 영화를 생성하고 반환하는 예제 메서드
        return movieService.saveMovie(movie);
    }
}
위의 예제에서 
@RestController는 MovieController가 RESTful API의 엔드포인트를 제공하는 컨트롤러임을 의미합니다. 메서드의 반환값은 자동으로 JSON 형식으로 변환되어 클라이언트에 응답으로 전달됩니다.@RequestBody
- 설명: @RequestBody는 HTTP 요청의 본문(body)에서 데이터를 추출하여 메서드의 매개변수로 전달합니다. 이 애너테이션은 주로 POST, PUT 요청에서 클라이언트가 보낸 JSON 또는 XML 데이터를 Java 객체로 변환하여 처리할 때 사용됩니다.
- 기능:
- 요청 본문에서 JSON/XML 데이터를 Java 객체로 변환합니다.
- 요청 본문을 처리할 수 있는 POJO(Plain Old Java Object) 클래스를 자동으로 매핑합니다.
- 예제:
@RestController
@RequestMapping("/api/movies")
public class MovieController {
    @PostMapping
    public Movie createMovie(@RequestBody Movie movie) {
        // 요청 본문에서 전달된 Movie 객체를 처리
        return movieService.saveMovie(movie);
    }
}
위의 예제에서 
@RequestBody는 클라이언트가 보낸 요청 본문을 Movie 객체로 변환하여 createMovie 메서드의 매개변수로 전달합니다. 클라이언트가 JSON 형식으로 보낸 데이터는 자동으로 Movie 객체로 변환됩니다.요약
- @RestController: RESTful API를 제공하는 컨트롤러를 정의하며, 메서드의 반환값을 JSON 또는 XML 형식으로 직렬화하여 클라이언트에 응답으로 보냅니다.
- @RequestBody: HTTP 요청의 본문에서 데이터를 추출하여 Java 객체로 변환하고, 메서드의 매개변수로 전달합니다.
이 두 애너테이션을 함께 사용하면 클라이언트와 서버 간의 데이터 전송과 처리가 간편하고 효율적으로 이루어집니다.
Share article