작성
·
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 웹 기본 지식 강의를 학습하시면 고민하는데 도움이 되실거에요.
감사합니다.