인프런 커뮤니티 질문&답변

akgkfk3님의 프로필 이미지

작성한 질문수

모든 개발자를 위한 HTTP 웹 기본 지식

사용자, 관리자 Rest API를 한 서버에서 관리할 때, URI 설계

24.05.23 01:31 작성

·

221

·

수정됨

0

안녕하세요.

이번에 신입 백엔드 개발자로 취업하게 되어 프로젝트를 진행 중에 해당 HTTP 강의를 듣고 궁금한 점이 생기어 올리게 되었습니다.

 

다름이 아니라 사용자 API와 관리자 API를 제공하는 서버가 분리되어 있지 않고 한 서버에서 모두 제공하는 형태에서 URI를 어떻게 설계해야 하는지 잘 모르겠습니다.

 

예를 들어, 로그인 API를 예시로 들어보자면 "/v1/api/login" 으로 만들면 깔끔한데 관리자 로그인도 들어가야해서 결국 "/v1/api/user/login", "/v1/api/admin/login" 으로 설계하게 되었는데 이게 잘 설계한 것인지 모르겠습니다...

 

[예시]


  1. 인증이 필요없는 API --> 기본 Path "/api/v1/..."

--> ex. /api/v1/products (상품 목록 API)

 

  1. 사용자 인증이 필요한 API --> 기본 Path "/api/v1/user/..."

--> ex. /api/v1/products (내 상품 목록 API)

 

  1. 관리자 인증이 필요한 API --> 기본 Path "/api/v1/admin/..."

--> ex. /api/v1/admin/products (모든 유저 상품 목록 API)


 

[궁금한 점]

  1. 사용자 API와 관리자 API를 한 서버에서 제공하는 경우에 URI를 어떤 규칙을 갖고 설계하는 게 좋은지 궁금합니다.

 

  1. 하나의 컨트롤러에다 인증이 필요없는 Public API, 사용자 API, 관리자 API를 모두 관리하는 게 좋은지 아니면 권한별로 컨트롤러를 쪼개서 관리하는 게 좋은 것인지 궁금합니다.

     

--> (하나의 컨트롤러로 관리) ex. ProductController

--> (권한 별로 쪼개서 관리) ex. PublicProductController, UserProductController, AdminProductController

 

 

답변 1

0

codesweaver님의 프로필 이미지

2024. 05. 23. 09:17

안녕하세요. akgkfk3님, 공식 서포터즈 코즈위버입니다.

저라면 API 별로 서브도메인을 만들어 분리할것 같습니다.

 

API에 담아야 하는 내용은 보통 관리자와 프론트가 다른 경우가 많습니다. 분리해서 따로 관리하는 것이 좋아보이며, 관리자 API, 프론트 API 를 아예 다른 프로젝트로 관리하는 것도 괜찮습니다.

인텔리제이를 이용하고 계시다면 한 프로젝트 안에서 멀티 프로젝트를 구성하여 별도로 빌드 및 배포하도록 관리할 수 있습니다.

 

감사합니다.

창신동 장첸님의 프로필 이미지

2024. 10. 11. 11:00

서브도메인 마다 각각 스프링어플리케이션들을 두어야 하나요?

 

아니면 스프링프로젝트 하나에서 여러 서브도메인을 지정할 수 있나요?

akgkfk3님의 프로필 이미지

작성한 질문수

질문하기