개발자

프론트와 백 연결중 Controller

2024년 01월 23일조회 554

일단 제 친구가 프론트 저는 백엔드 이렇게 서로 처음 팀프로젝트를 해보고자 노력하고 있습니다. 만드는 과정에서 궁금증이 생겼고 이걸 물어볼 곳이 없어서 선배개발자가 많은 이곳에 물어보려고 글을 씁니다! (우선 글이 좀 방황할 수 있는데 미리 죄송합니다ㅠ) ------------------------------ 현재 스프링을 통해서 개발 중인데 궁금한거는 @Controller에 있습니다 이 어노테이션은 view를 반환하고 @RestController은 data를 반환하는 걸로 알고 있습니다. 데이터를 주고 받고자 한다면 RestController를 사용하면 되는데 @Controller을 사용하기 위해서는 view를 반환하기에 html이 있어야 되는걸로 알고 있습니다. 그러면 @Controller를 통해서 작업을 처리하고자 한다면 백엔드 프로그램에 html을 놔둬야 하는건가요? 아니면, 프론트에서 html과 같은 것을 작성하고 그 view를 반환하는 건가요? 요약: 프론트와 백 연결과정 중 @RestController이 아닌 @Controller은 어떻게 연결하나요?

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 2

인기 답변

이양일님의 프로필 사진

안녕하세요! @Controller 어노테이션은 전통적인 Spring MVC 기반으로 동작할 때 View 를 반환하기 위해 사용하는 어노테이션이고 @RestController 어노테이션은 @Controller 어노테이션에 @ResponseBody 가 추가된 것으로 객체 데이터를 반환하여 전달하는것을 목적으로 합니다. 주로 RESTful API(혹은 일반적인 HTTP API) 를 구현할 때 많이 쓰입니다. 즉 @RestController 를 안쓰고 @Controller 를 통해 API 를 구현하고 싶으시다면, @Controller 를 정의하신 뒤에 @ResponseBody 어노테이션을 쓰시고, ResponseEntity 를 전달하는 형태로 구현하시면 @RestController 를 쓰는것과 동일하게 구현하실 수 있고 이때 말씀하신 html 작성은 필요하지 않습니다. 초기에는 @Controller 로 모든 상황을 구현하다가 이후 편의성과 가독성을 위해 @RestController 가 추가로 나오게 되었다고 이해해주시면 되겠습니다. 구글링 해보시면 @Controller 와 @RestController 차이가 잘 정리된 많은 글들을 접하실 수 있는데요, 그중에 잘 정리된 블로그를 추가로 첨부드립니다. https://mangkyu.tistory.com/49 저의 짧은 지식이 조금이나마 도움이 되시길 바랍니다.

profile picture

익명

작성자

2024년 01월 25일

안녕하세요 자세한 답변주셔서 저가 인지하고 있던 개념이 더 명확해진 것 같습니다! 하나만 더 질문 드리고 싶은게 있습니다! @Controller은 View를 반환하여서 html을 작성해 클라이언트한테 보이도록 만들 수 있잖아요! 현업에 간다면 데이터를 반환하는 형식이 아닌 View를 반환하는 형식인 @Controller이 어떤 역할을 하는지 궁굼해서 질문드립니다! 그리고, 자세한 답변 감사합니다!

이양일님의 프로필 사진

이양일

NaverCloud 백엔드 개발자2024년 01월 25일

View 는 어떻게 구현하느냐에 따라 html 이 아닌 다른 응답도 가능합니다. 즉, 앞서 설명드렸던 ResponseBody 동작내용을 View 로도 구현이 가능합니다. (그래서 과거에는 Json 응답값을 내려주기 위한 JsonView 라는것도 종종 이용하곤 했습니다.) 그래서 앞서 말씀드린 Data 를 전달하거나 파일다운로드 혹은 JSP 를 내려주기 위해서도 View 를 사용할 수 있습니다만, 요즘에는 많이 사용되진 않는것 같습니다.

profile picture

익명

작성자

2024년 01월 25일

답변 감사합니다!

삭제된 사용자님의 프로필 사진

삭제된 사용자

2024년 01월 24일

프론트는 리액트로 개발하시는건가요??

profile picture

익명

작성자

2024년 01월 24일

네! 프론트는 리액트로 개발합니다

profile picture

익명

작성자

2024년 01월 24일

보통 프론트와 백엔드를 분리해서 개발하는 경우에는 백엔드는 @RestController를 사용해서 응답 데이터를 내려주는 API를 구현하고, 프론트에서는 해당 API와 통신해서 응답받은 데이터로 화면 개발을 합니다. 혹시 @Controller를 사용해야 하는 이유가 따로 있으신건가요?

profile picture

익명

작성자

2024년 01월 24일

그러한 상황은 딱히 없었는데 @Controller이 왜 있을까부터 시작해서 여기까지 온것같아요! 그래서 정확한지는 모르겠지만 정적인 페이지 같은건 ssr형식으로 보내는게 좋다고, 그래서 타임리프나 jsp를 알아야한다고 하더라고요. 이런걸 생각해보면 @Controller를 통해서 뷰를 반환하게 된다면 꾸미는 css같은건 어떻게 연결하는건지 이런게 정리가 안되더라고요! 제가 잘못 이해한건지도 잘 모르겠어서 여기에 질문했어요!

profile picture

익명

작성자

2024년 01월 24일

아하 그렇군요! ㅎㅎ 이건 개발자마다 다를 수 있겠지만 저는 프론트/백엔드를 분리해서 개발한다면 서로의 역할에 집중하는게 좋다고 생각합니다. (프론트는 화면 개발, 백엔드는 API 개발) @Controller는 작성자님 말씀대로 ssr 방식으로 개발할 때 주로 사용합니다! 이 부분은 작성자님과 친구분이 서로 얘기해서 정해보면 좋을 것 같네요 프로젝트 화이팅 입니다!

profile picture

익명

작성자

2024년 01월 24일

아 그렇군요! html 문법에 대해 제대로 잘 알지 못해서 시도에 대한 두려움이 있었는데 개발 상황마다 다른 것 같네요!! 추후에 공부하면서 잘 알아보고 해봐야겠네요!! 답변와 응원 감사합니다!!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2024년 01월 23일

`@Controller` 와 `@RestController` 두 가지 어노테이션 모두 Spring MVC에서 사용되는 컨트롤러를 정의하는 방식입니다. 당신이 말한대로, `@RestController`는 JSON과 같은 형식의 데이터를 반환 하도록 설계되었고, `@Controller`는 일반적으로 뷰 이름(String)을 반환하도록 설계되었습니다. 프론트엔드와 백엔드가 분리된 상황에서(예: 프론트엔드가 React, Angular 등을 사용하고 있거나 별도의 서버에서 동작하는 경우), 대부분 API 서버는 `@RestController`를 통해 데이터를 주고 받게 됩니다. 그러나 `@Controller`를 이용해 HTML 뷰를 제공하려면, 보통 Spring MVC와 같은 서버 사이드 랜더링(SSR) 기술을 사용합니다. 이 경우 백엔드 코드 내에 JSP, Thymeleaf 등의 템플릿 엔진을 이용하여 클라이언트에게 전달할 HTML 페이지를 만들어 줍니다. 답변 요약: 프론트와 백 연결 과정 중 @RestController 이 아닌 @Controller 은 서버 사이드 랜더링(SSR) 기술을 통하여 view(HTML 등)을 생성 후 반환합니다. 이 때 해당 HTML 파일은 백엔드 쪽에 위치하게 됩니다.

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!