@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