@RestController와 @RequestBody

허성재's avatar
Sep 02, 2024
@RestController와 @RequestBody
@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); } }
      위의 예제에서 @RestControllerMovieController가 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

heo-gom