해결된 질문
작성
·
161
1
안녕하세요. 현재 Rest Api로 백엔드 개발을 하고,
View는 Html thymeleaf를 이용해 구현을 하려고 합니다.
리액트 등의 프레임워크를 사용하지 않는다면,
@GetMapping으로 View단을 불러올 때,
@RestController가 아닌 @Controller에서 불러와야하는데
그렇다면 @RestController와 @Controller 둘 다 따로 만들어야 하는지 궁금합니다.
예를 들어, 공지사항 전체 조회의 @RestController의 코드가
// // 공지사항 전체 조회
// @GetMapping("/ypjs/board/notice/notices")
// public Result findAll(@RequestParam int offset, @RequestParam int limit) {
// List<Notice> noticeList = noticeService.findAll(offset,limit);
// List<NoticeDto.NoticeApiDto> result = noticeList.stream()
// .map(n -> new NoticeDto.NoticeApiDto(n.getNoticeId(), n.getNoticeTitle(), n.getNoticeContent(),
// n.getNoticeCnt(), n.getNoticeDate(), n.getMember().getNickname()))
// .collect(Collectors.toList());
// return new Result(result);
// }
라면,
공지사항 전체 조회의 @Controller의 코드는
이렇게 구현하면 되는건가요?
+ 만약 이게 맞다면 @RestController의 GetMapping URL과 @Controller의 GetMapping URL이 겹치면 실행이 안되므로, @RestController의 URL을 /api/ypjs/board/notice/notices로 변경하면 될까요?
그렇다면, 제 프로젝트에서 @RestController의 @GetMapping 코드는 더 이상 쓰지 않는 코드가 되는 것인데, 남겨놔도 되는건지 궁금합니다..
그리고 View 연결만을 위한 @Controller 클래스를 따로 만드는 것이 현업에서도 많이 쓰이는 방법인지가 궁금합니다.
----------------------------------------------------------------------------------------------------------------
(질문 요약)
1. 리액트 같은 프레임워크 없이 프로젝트를 Rest Api로 개발할 때, 화면만을 위한 @Controller 클래스를 따로 만들어도 되나요? 만약 이 경우에 GetMapping URL이 겹치면 안되니까 @RestController의 URL엔 /api/를 추가해서 겹치지 않게 하는 식으로 하나요?
2. 다른 부분은 rest api로 개발하고, View 연결만을 위한 @Controller 클래스를 따로 만드는 것이 현업에서도 많이 사용하는 방법인가요?
3. 만약 화면을 위해 @Controller 클래스를 만드는게 좋은 방법이라면, @RestController의 @GetMapping 코드는 더 이상 쓰지 않는 코드가 되는 것인데, 활용할 방법이 있을까요? + 남겨놔도 되는건가요?
화면을 따로 개발하는 것이 아니라, 저처럼 같이 개발하는 경우 Rest api 개발을 하는것이 의미가 있는지 궁금합니다.
Rest api 개발을 경험해보고 연습해보고싶어 백엔드단을 Rest api로 먼저 개발해서 완성하고, 프론트엔드는 프레임워크를 다루지 못해 html을 이용해 화면을 만들고 연결하는 식으로 했다!는 것이 Rest api로 프로젝트를 만드는 것에 대한 충분한 설명이 될 수 있을까요?
답변 1
0
안녕하세요. 양성준님, 공식 서포터즈 y2gcoder입니다.
맞습니다. 한 서버 프로젝트 내에서 같은 HTTP Method + 같은 HTTP URI를 사용하는 것보단 화면 단이나 API 쪽에 prefix를 붙여주시길 권해드립니다!
저도 그렇게 구현했고, 현업에서도 한 서버 프로젝트 내에서 API와 View를 같이 제공해야 할 때 그렇게 구현하는 것으로 알고 있습니다 🙂
사용하지 않는 코드는 지워주시는게 유지보수상 더 좋습니다. 만약 Git과 같은 형상관리 시스템을 사용하고 계신다면 내역은 남아있기 때문에 나중에 필요하면 다시 만들기도 쉽습니다 🙂
5. 제가 양성준님의 말씀을 제대로 이해한 것인지 모르겠으나, 면접 시 프로젝트에 대해 질문 받았을 때를 가정하는 것 같습니다! 지원한 직무, 면접관 분의 성향에 따라 답은 다를 수 있으나, 충분히 의미 있는 답변이 될 거라 생각합니다 🙂
감사합니다.