2017-09-29 2 views
0

다음과 같은 REST 인터페이스를 디자인하는 방법에 대한 제안, 제안을 찾고 있습니다. 이제 모든 팀으로 구성된 하나의 표가있는 데이터베이스가 있다고 가정합니다. 다음으로 나는 이름과 같은 속성을 가진 사람들의 테이블을 가지고 있습니다. 그 사이에 사람들과 팀을 연결하는 링크 테이블이 있고 반대의 경우도 있습니다. 이 표에서 나는 그 사람이 팀 (예 : 공격자)에 대해 갖는 역할에 대한 정보를 얻을 수 있습니다. 그래서 한 사람은 팀에 속할 때 플레이어가됩니다.관계가있는 REST 인터페이스 리소스

적절한 REST 리소스 설계는 무엇이 될까요? 나는 자원/팀을 가지고 있다고 말할 것이다. 또한 자원/사람. 특정 관계를 호출하는 리소스 경로를 어떻게 설계합니까 (링크 테이블에 설명되어 있음).

감사합니다.

+0

저장소 구현을 시작한 다음 그 저장소를 노출하는 방법을 묻습니다. 이것은 거꾸로입니다. 클라이언트가 데이터를 인식하는 방법을 직접 묻는 것이 좋습니다. 그에 따라 리소스를 디자인 한 다음 작동하는 구현 및 URI 매핑을 생각해 내십시오. 그렇다고해서 구현 결정을 내리지 않아야한다는 말은 아닙니다. 예를 들어, 당신이 설명한 방식은 n : m 관계에 대한 올바른 데이터베이스 구현입니다. 그러나 당신은 클라이언트가 세계를 보는 방법을 운전하게하지 말아야합니다. 이것은 RESTful API 디자인에 대해 어려운 것입니다! –

답변

0

연결 모델을 노출하는 데는 아무런 문제가 없습니다.

/teams/persons 외에도 memberships을 가질 수 있습니다 (이유는 /people,하지만 내가 빗나가 다). 이것은 클라이언트가 멤버십을 조작하고 특히 회원 자체가 관심 대상인 경우 좋은 방법입니다. 회원 자격에는 시작일 및 종료일과 같은 속성, '용도'입력란 등이 포함될 수 있습니다.

이 있음. POST와 같은 일을/teams/someteam에 person하고 팀을 중첩 된 사람들의 목록으로 표시 할 수 있습니다. 마찬가지로/persons/arjan에 team을 게시하고 그 사람의 URL이 팀의 둥지 목록을 포함하도록 할 수 있습니다. 이 방법으로 멤버쉽을 구현 세부 사항으로 만 취급하고 API에 노출시키지 마십시오. 회원 자격이 그들 자신의 권리로 중요한 것이 아니라면 이것을 할 수 있습니다.