2017-09-29 58 views
0

我正在尋找一些想法,以及如何設計以下REST接口的建議。 現在讓我們假設我有一個包含所有團隊的表格的數據庫。接下來我有一個名字等屬性的人的表格。在兩者之間我會有一個鏈接表,它將團隊與人員連接起來,反之亦然。在這張表中,我也會得到關於這個人在團隊中的角色的信息(比如攻擊者)。所以當一個人屬於一個團隊時,他就成爲一名球員。具有關係的REST接口資源

什麼是適當的REST資源設計? 我會說我有一個資源/團隊。也是資源/人員。我將如何設計資源路徑來調用特定關係(如鏈接表中所述)。

謝謝。

+0

您從存儲實施開始,然後詢問如何以REST方式公開該存儲。這是倒退。你應該問自己,你希望客戶如何看待數據。相應地設計資源,然後提出一個可用的實現和URI映射。這並不是說你不應該事先做出實施決策。例如,您所描述的方式是針對n:m關係的正確數據庫實現。但是,你不能讓這推動客戶如何看待這個世界。這對於RESTful API設計來說很困難! –

回答

0

暴露關聯模型也沒有錯。

例如除/teams/persons之外,您可以有memberships(爲什麼不是/people但我離題了)。如果客戶會操縱會員資格,尤其是會員本身感興趣,例如會員資格有時包括開始和結束日期,「目的」字段等屬性。

您不要去這條路線。你可以做一些事情,例如POST/person給/ teams/someteam,並給團隊一個嵌套人員列表。同樣,您可以將team發佈到/ persons/arjan,並使該人員的URL包含團隊的嵌套列表。通過這種方式,您只將成員資格視爲實現細節,並且不會將其公開在API中。如果會員身份本身不重要,您可以這樣做。