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

HDK님의 프로필 이미지
HDK

작성한 질문수

실전! 스프링 데이터 JPA

김영한 개발자님의 조언을 구하고 싶습니다

작성

·

259

0

Q. 질문은 api uri 를 만드는 규칙에 관련된 것입니다.

여러 회사가 있을 때 "회사에 소속된 팀 조회" & "회사에 소속된 사원 조회" 를 하는 api를 만들 경우 

아래에 있는 두 가지 방법 중 어떤 것이 옳을까요?

1. 

/회사/{id}/팀

/회사/{id}/멤버

2.

/팀?회사id=1

/멤버?회사id=1

**제 생각

저는 1번이 맞다고 생각했으나, 더많은 정보가 있을 때

/회사/{id}/장비

/팀/{id}/멤버

등 api 개수가 너무 많아지는 문제가 있다고 생각되었습니다.

2번의 경우도 더많은 정보를 고려하면

/멤버?회사id=1&팀id=2&성별=남

하나의 uri가 너무 많은 기능을 담당하게 되는 문제가 있다고 생각되었습니다.

신입 개발자로써 많은 고민을 했지만 결론이 나오지 않아서

이름있는 선배 개발자님과 소통할 수 있는 유일한 창구가 인프런이기에 

부득이하게 질문하게 되었습니다 ㅠㅠ..

답변 해주시면 정말 감사하겠습니다.

답변 1

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. HDK님

설계에 대한 모든 것은 트레이드 오프가 있습니다.

/회사/{id}/팀/{id} 처럼 설계를 해도 되고,

/팀/{id} 처럼 줄여서 설계를 해도 됩니다.

URI에서 중요한 것은 리소스를 식별하는 것 입니다.

리소스를 확실하게 식별할 수 있으면 되는 것이지요.

여기서 리소스가 팀, 사원이기 때문에 다음과 같이 설계하셔도 됩니다.

/팀

/팀/{팀Id}

/사원

/사원/{사원Id}

대신 이 경우 팀과 사원의 ID가 다른 회사들과 겹치지 않도록 구분할 수 있어야 합니다.

만약 구분할 수 없다면 다음과 같이 정리하는 것이 좋습니다.

/회사/{id}/팀/{팀id}

추가로 마지막에 고민하셨던 이 내용은

/멤버?회사id=1&팀id=2&성별=남

하나의 URI가 너무 많은 기능을 담당하게 되는 문제가 있다고 고민했지만, 사실 이것은 하나의 기능만 담당하고 있습니다. 바로 멤버를 검색하는 기능만 담당하고 있는 것이지요. 이렇게 검색 조건이 추가로 더 들어가는 것은 괜찮습니다.

관련해서 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 학습하시면 고민하는데 도움이 되실거에요.

감사합니다.

HDK님의 프로필 이미지
HDK

작성한 질문수

질문하기