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

yoona405님의 프로필 이미지
yoona405

작성한 질문수

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

수업자료

rest api설계 디자인에 관하여

작성

·

188

·

수정됨

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
안녕하세요. 현재 프로젝트로 스케줄러 rest api 개발을 하고 있습니다.하지만 rest api 설계 중 어떤 형식으로 설계해야 좋은 설계가 될지 고민이 들어 질문 드립니다.

 

스케줄러 시나리오는 다음과 같습니다.

유저A가 여러 유저들과 그룹a'를 만들고 그룹a'에서 스케줄을 생성할 수 있습니다.

유저A는 모든 약속을 한번에 모아볼 수 있고, 또는 그룹a'의 방에 들어가서 그룹a'의 스케줄을 볼 수 있습니다.

1번

 /user/{userId}/schedules : 유저의 모든 스케줄

/group/{groupId}/schedules : 그룹의 모든 스케줄

/schedules/{scheduleId} : 상세 스케줄

 

2번

/schedules/user/{userId} or /schedules?userId= 유저의 모든 스케줄

/schedules/group/{groupId} or /schedules?groupId 그룹의 모든 스케줄

/schedules/{scheduleId} 상세 스케줄

 

어떤 방식이 좋은 방식인가요?

1번은 계층적 구조에 중점을 두었다 생각하고 2번은 리소스에 대한 가시성이 좋다고 생각이 듭니다.

웹페이지를 라우팅할때는 1번 rest api를 설계할때는 2번 방식을 무심코 썼었던거 같은데 둘의 URL매핑 구조는 달라야 하는게 맞는건가요?

 

글이 두서가 없어 죄송합니다! 아직 지식에 부족함이 많아 정리가 잘 안되네요.

 

답변 1

0

안녕하세요. yoona405님, 공식 서포터즈 David입니다.

상황에 따라 다를 것 같습니다. 둘 다 사용할 수 있는 상황을 예를 들어보겠습니다.

예를 들어, 개인 사용자가 자신의 모든 일정을 보려고 할 때 /user/{userId}/schedules 경로를 가지는 API를 호출 할 수 있습니다.

그리고 관리자가 일정 검색 기능을 통해 특정 유저의 일정을 검색하려고 합니다. 이때는 /schedules?userId=?&startDate=?&endDated 와 같이 사용할 수도 있습니다.

따라서, 특정 케이스를 배제하지 않고 필요한 것을 상황에 맞게 사용하시면 됩니다.

감사합니다.

yoona405님의 프로필 이미지
yoona405
질문자

답변 감사합니다.

그럼 관리자가 아닌, 유저의 모든 일정을 요청하기 위해 client가 api를 호출할때에는

/user/{userId}/schedules 가 더 선호되는방식인가요?

 

마지막으로 서비스들에서 보통 두가지 경우를 다 구현해 놓는지 궁금합니다!

네, 맞습니다.

 

위에서도 말씀드렸지만 필요하면 구현합니다. 보통 둘 다 필요한 경우가 많습니다.

 

yoona405님의 프로필 이미지
yoona405

작성한 질문수

질문하기