inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

API 호출에 관해 질문드립니다 (내용보충)

해결된 질문

236

양성준

작성한 질문수 4

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 코드는 더 이상 쓰지 않는 코드가 되는 것인데, 활용할 방법이 있을까요? + 남겨놔도 되는건가요?

  1. 화면을 따로 개발하는 것이 아니라, 저처럼 같이 개발하는 경우 Rest api 개발을 하는것이 의미가 있는지 궁금합니다.

  2. Rest api 개발을 경험해보고 연습해보고싶어 백엔드단을 Rest api로 먼저 개발해서 완성하고, 프론트엔드는 프레임워크를 다루지 못해 html을 이용해 화면을 만들고 연결하는 식으로 했다!는 것이 Rest api로 프로젝트를 만드는 것에 대한 충분한 설명이 될 수 있을까요?

 

java spring spring-boot jpa

답변 1

0

y2gcoder

안녕하세요. 양성준님, 공식 서포터즈 y2gcoder입니다.

  1. 맞습니다. 한 서버 프로젝트 내에서 같은 HTTP Method + 같은 HTTP URI를 사용하는 것보단 화면 단이나 API 쪽에 prefix를 붙여주시길 권해드립니다!

  2. 저도 그렇게 구현했고, 현업에서도 한 서버 프로젝트 내에서 API와 View를 같이 제공해야 할 때 그렇게 구현하는 것으로 알고 있습니다 🙂

  3. 사용하지 않는 코드는 지워주시는게 유지보수상 더 좋습니다. 만약 Git과 같은 형상관리 시스템을 사용하고 계신다면 내역은 남아있기 때문에 나중에 필요하면 다시 만들기도 쉽습니다 🙂

  4. 5. 제가 양성준님의 말씀을 제대로 이해한 것인지 모르겠으나, 면접 시 프로젝트에 대해 질문 받았을 때를 가정하는 것 같습니다! 지원한 직무, 면접관 분의 성향에 따라 답은 다를 수 있으나, 충분히 의미 있는 답변이 될 거라 생각합니다 🙂

 

감사합니다.

강의 관련 외 질문입니다.

0

82

2

SpringBoot4 + Hibernate7 모듈 등록 방법 공유

1

101

1

BeanCreationException

0

96

3

Update 후 UpdateMemberResponse 매핑할 때

0

57

1

트랜잭션을 사용 안 할 때 커넥션은 언제 가져오나요?

0

103

2

페이징 + 검색조건 관련해서 질문드립니다.

0

74

1

Query Dsl Q파일 질문입니다.

0

86

1

루트 쿼리라는것은

0

62

1

메서드를 분리하는 기준

0

71

1

findAllWithMemberDelivery 메서드 질문드립니다.

0

116

3

연관관계 매핑을 안 쓸 경우, 사용해야 하는 전략

0

92

2

fetch join과 영속화와 OSIV의 관계

0

91

2

Distinct 사용 전 결과에 대한 의문

0

119

2

레포지토리 계층에서의 트랜잭션에 대한 의문

0

63

1

영속성 컨텍스트 생명주기의 신기한 부분이 있습니다.

0

79

2

dto 필드 속 엔티티 여부

0

63

1

뷰템플릿 사용 시

0

82

2

Result 클래스 관련 질문

0

57

1

@PostConstruct 프록시 관련 질문드립니다

0

88

1

DTO 대신 Form 사용은 안되나요?

0

140

1

OSIV ON 상태일 때

0

99

1

fetch join VS fetch join 페이징 궁금증

0

191

2

양방향 연관관계 알아보는 법?

0

110

1

16강 17강 간단 정리 이게 맞을까요 ?

0

168

2