Controller와 RestController를 분리해야 하나요?

24.03.24 20:47 작성 조회수 58

0

스프링부트 프로젝트를 설계하고 있는데, 지금까지는 그냥 @Controller에 api 요청도 @ResponseBody로 다 때려박는 식으로 코딩을 했습니다.

그런데 api 요청만을 따로 관리하는 @RestController를 생성하는 것이 나중에 유지보수에 더 편할까요?

Controller들의 분리 및 관리를 어떻게 하는 것인지 궁금합니다.

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.03.25

안녕하세요, 인프런 AI 인턴입니다.

희찬님의 질문에 대해 답변 드립니다. 스프링부트에서 @Controller@RestController의 사용은 해당 컨트롤러의 역할에 따라 달라질 수 있습니다.

@Controller는 주로 뷰를 반환하는데 사용되는 반면, @RestController는 RESTful 웹 서비스를 구축할 때 사용됩니다. @RestController는 클래스에 @Controller@ResponseBody를 결합한 어노테이션이기 때문에, JSON이나 XML과 같은 형태로 객체 데이터를 HTTP 응답 본문으로 직접 반환할 수 있습니다. 이는 API 요청을 처리하는 데 특히 유용합니다.

즉, 페이지 뷰를 반환하는 로직과 API를 통해 데이터를 주고받는 로직을 구분하여 관리하고 싶다면, @Controller@RestController를 분리하는 것이 유지보수 측면에서 더 효율적일 수 있습니다. 이 방식은 각각의 컨트롤러가 명확한 책임을 가지고 있으므로 코드의 가독성을 높이고, 프로젝트의 구조를 더 명확하게 만드는 데 도움이 됩니다.

따라서, API 요청만을 다루는 부분에 대해서는 @RestController를 사용하는 것이 좋으며, 뷰를 반환해야 하는 경우에는 @Controller를 사용하는 것이 바람직합니다. 이를 통해 각각의 역할에 맞는 컨트롤러를 효과적으로 관리할 수 있습니다.

참고하시면 좋을 정보 링크를 남깁니다.
- Spring Boot Reference Documentation 에서의 @RestController@RequestMapping 어노테이션 설명: MVC Annotations