일반적으로 MVC 아키텍처에서 컨트롤러는 Model, View 사이의 상호작용을 관리하며, 비즈니스 로직을 처리하지 않습니다.
전통적인 Spring MVC의 컨트롤러인 @Controller는 주로 View를 반환하기 위해 사용합니다.
Spring MVC의 컨트롤러를 사용하면서 Data를 반환해야 하는 경우도 있습니다. 컨트롤러에서는 데이터를 반환하기 위해 @ResponseBody 어노테이션을 활용해주어야 합니다. 이를 통해 Controller도 Json 형태로 데이터를 반환할 수 있습니다.
💻 예시 코드
// view 반환 예시
@Controller
public class ControllerExample {
@RequestMapping("/example1")
public String controllerExample1() {
return "/example1/view";
}
}
// Json 데이터 예시
@Controller
@RequiredArgsConstructor
public class IndexController {
private final PostsService postsService;
@PostMapping("/post")
public @ResponseBody Posts hello(@RequestBody Posts post) {
String id = post.getId();
return postsService.findById(id);
}
}
🔍 RestController
RestController는 RESTful 웹 서비스를 제공하는데 특화된 컨트롤러입니다.
RESTful 아키텍처 스타일에 맞춰 HTTP 요청에 대한 응답을 제공합니다.
데이터를 JSON 또는 XML 형식으로 객체 데이터를 반환하며, 주로 REST API 개발에 활용됩니다.
객체를 ResponseEntity로 감싸서 반환합니다.
💻예시 코드
@RestController
@RequiredArgsConstructor
public class IndexController {
private final PostsService postsService;
@PostMapping("/post")
public Posts hello(@RequestBody Posts post) {
String id = post.getId();
return postsService.findById(id);
}
}