김영한 개발자님의 조언을 구하고 싶습니다
311
작성한 질문수 3
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 웹 기본 지식 강의를 학습하시면 고민하는데 도움이 되실거에요.
감사합니다.
existsByUserIdAndProjectId vs existsByUserAndProject 중 어떤 방식이 적절할까요?
0
65
1
existsByUserIdAndProjectId vs existsByUserAndProject 중 어떤 방식이 적절할까요?
0
101
3
MemberRepository 구현체
0
56
1
pdf 표현 질문드립니다.
0
60
1
로그가 남지 않는 문제.
0
79
1
테스트 라이브러리가 강의는 junit4가 맞나요??
0
68
2
pdf 파일과 차이점이 있는 것같은데 문제 없나요?
0
69
2
@PrePersist, @PreUpdate 호출 시점 질문드립니다.
0
90
2
Sort 인터페이스는 잘 사용 안하나요?
0
51
1
스캔대상 질문드립니다.
0
45
1
하이버네이트6에서의 최적화에 이은 질문
0
82
1
save() vs saveAndFlush DB 통신 횟수
0
51
1
순수 JPA 리포지토리 코드 수정부분
0
85
2
bulk연산 후 flush하는 이유를 모르겠어요
0
148
3
bulk insert 질문입니다.
0
174
2
교만했던 것 같아요.
0
143
1
RESTful 강의는 안하시는 건지 궁금합니다.
0
144
2
동적 테이블에 대한 질문
0
84
1
영속성 전이와 연관관계
0
129
2
강의 10:25 질문
0
72
1
단건 update 질문
0
94
2
엔티티 와 도메인의 경계
0
125
1
UsernameOnlyDto 타입 type mismatch 오류
0
115
1
Projection 개념과 데이터 전달과정에 대해 질문 있습니다.
0
133
1





