개발자

서버 엔드포인트 및 컨트롤러 구조에 대해 조언 부탁드립니다.

2023년 09월 18일조회 57

현재 nestjs로 서버를 구현하고 있습니다! 서점과 관련된 서비스를 구현하고 있는데 엔드포인트와 그와 관련된 컨트롤러 설계를 어떻게 해야할지 고민 되어 여쭤봅니다. 서점의 리뷰를 불러오는 것은 [GET places/:placeId/reviews] 서점에 리뷰를 등록하는 것은 [POST places/:placeId/reviews] 특정 리뷰를 삭제하는 것은 [DELETE reviews/:reviewId] 로 엔드포인트를 설계하려 합니다! 다만 리뷰와 관련된 엔드포인트가 places 도메인과 reviews 도메인에 산계되어 있어서 파일 구조에 영향을 끼치는데요, places 도메인을 담당하는 핸들러는 전부 place controller에, reviews 도메인을 담당하는 핸들러는 전부 review controller에 넣을 생각입니다. 그리고 서점 리뷰 조회와 등록은 place controller에서 요청을 받고 해당 비즈니스 로직은 review service에 위임하려고 하는데요 이렇게 하는 것이 나중에 프로젝트 유지보수에 좋을지.. 다른 분들은 어떻게 엔드포인트를 설계하고 컨트롤러 구조를 잡고 계신지 궁금하여 질문 남깁니다...! 많은 조언 부탁드립니다

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

답변 0

답변이 없을 때 보이는 아이콘

첫 답변을 기다리고 있어요.

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

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

또는

이미 회원이신가요?

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

커리어리 AI 봇

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

2023년 09월 18일

엔드포인트 및 컨트롤러 구조 설계에 대한 조언을 드리겠습니다. 우선, 엔드포인트의 경우 당신이 정하신 것처럼 리소스 중심으로 설계하는 것이 좋습니다. 주어진 엔드포인트는 사용자가 해당 작업을 이해하는데 명확하고, RESTful 규칙을 잘 따르고 있습니다. 컨트롤러의 구조 부분에서 걱정이 되시는 점은 흔한 고민입니다. places와 reviews를 각각 별도의 컨트롤러로 관리하는 것은 코드 가독성과 유지보수 측면에서 바람직합니다. 그러나, 서점 리뷰 조회와 등록 같이 두 도메인이 교차하는 부분은 어디에 위치시켜야 할지 애매할 수 있습니다. 위에서 말씀하신대로 place controller에서 이러한 요청을 받고 비즈니스 로직은 review service에 위임하는 방식은 충분히 합리적입니다. 이렇게 하면 각 컨트롤러는 각자의 주요 책임영역에 집중하면서도 필요한 동작들을 세세하게 제어할 수 있습니다. 하지만, 이 구조가 최선인지는 프로젝트의 전체 구조와 비즈니스 요구사항에 따라 달라집니다. 예를 들어, 리뷰 객체가 place와 독립적으로 존재하거나 다른 도메인과 연관성이 더 많을 경우, place controller에서 이를 처리하기보다는 review controller 혹은 별도의 컨트롤러에서 처리하는 것이 나을 수 있습니다. 따라서 전반적인 비즈니스 로직과 각 객체간의 관계를 고려하여 설계해야 합니다. 자신이 짜려고 하는 프로그램 전체 로직을 다시 한번 생각해 보면서, 어떤 컨트롤러에 어떤 역할을 부여할지를 결정하는 것이 좋습니다.

목록으로

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