작성
·
370
·
수정됨
0
안녕하세요.
이번에 신입 백엔드 개발자로 취업하게 되어 프로젝트를 진행 중에 해당 HTTP 강의를 듣고 궁금한 점이 생기어 올리게 되었습니다.
다름이 아니라 사용자 API와 관리자 API를 제공하는 서버가 분리되어 있지 않고 한 서버에서 모두 제공하는 형태에서 URI를 어떻게 설계해야 하는지 잘 모르겠습니다.
예를 들어, 로그인 API를 예시로 들어보자면 "/v1/api/login" 으로 만들면 깔끔한데 관리자 로그인도 들어가야해서 결국 "/v1/api/user/login", "/v1/api/admin/login" 으로 설계하게 되었는데 이게 잘 설계한 것인지 모르겠습니다...
[예시]
인증이 필요없는 API --> 기본 Path "/api/v1/..."
--> ex. /api/v1/products (상품 목록 API)
사용자 인증이 필요한 API --> 기본 Path "/api/v1/user/..."
--> ex. /api/v1/products (내 상품 목록 API)
관리자 인증이 필요한 API --> 기본 Path "/api/v1/admin/..."
--> ex. /api/v1/admin/products (모든 유저 상품 목록 API)
[궁금한 점]
사용자 API와 관리자 API를 한 서버에서 제공하는 경우에 URI를 어떤 규칙을 갖고 설계하는 게 좋은지 궁금합니다.
하나의 컨트롤러에다 인증이 필요없는 Public API, 사용자 API, 관리자 API를 모두 관리하는 게 좋은지 아니면 권한별로 컨트롤러를 쪼개서 관리하는 게 좋은 것인지 궁금합니다.
--> (하나의 컨트롤러로 관리) ex. ProductController
--> (권한 별로 쪼개서 관리) ex. PublicProductController, UserProductController, AdminProductController
답변 1
0
안녕하세요. akgkfk3님, 공식 서포터즈 코즈위버입니다.
저라면 API 별로 서브도메인을 만들어 분리할것 같습니다.
admin.Xxx.com/v1/user/.. (관리자 API)
front.Xxx.com/v1/user/... (프론트 API)
www.Xxx.com/ (일반 고객페이지)
API에 담아야 하는 내용은 보통 관리자와 프론트가 다른 경우가 많습니다. 분리해서 따로 관리하는 것이 좋아보이며, 관리자 API, 프론트 API 를 아예 다른 프로젝트로 관리하는 것도 괜찮습니다.
인텔리제이를 이용하고 계시다면 한 프로젝트 안에서 멀티 프로젝트를 구성하여 별도로 빌드 및 배포하도록 관리할 수 있습니다.
감사합니다.
서브도메인 마다 각각 스프링어플리케이션들을 두어야 하나요?
아니면 스프링프로젝트 하나에서 여러 서브도메인을 지정할 수 있나요?