인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

akgkfk3님의 프로필 이미지

작성한 질문수

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

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

작성

·

370

·

수정됨

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

나무늘보님의 프로필 이미지

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

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

 

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

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

 

감사합니다.

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

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

 

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

akgkfk3님의 프로필 이미지

작성한 질문수

질문하기