假設我有兩個實體 - 項目團隊和員工。每個員工可以是多個團隊的一部分,每個團隊可以有多個員工作爲團隊成員。我需要提供REST API來操縱團隊,員工和他們之間的關係。在不影響REST中子資源的情況下更新資源的正確HTTP方法
我確定了3個資源 - 團隊,員工和成員(團隊和員工之間的關聯),這是團隊的子資源。我選擇將會員作爲子資源的原因純粹是基於此資源的生命週期。每當團隊被移除時,成員被移除,以及他們在團隊本身之外沒有意義。
我露出下面的API(相關的):
POST /teams
創建了名新球隊戰績,部門ID等POST /teams/{name}/members
創建名稱和特定僱員鑑定團隊之間的關聯,所以輸入數據包含員工ID
我還需要提供API以在一個請求中更新部門ID和團隊的其他屬性。看起來PUT是自然選擇,但PUT的語義非常清晰 - 我必須替換整個資源,在這種情況下,這意味着要替換所有成員子資源。
當我只想在保留成員關聯的同時更新團隊屬性時,應該使用什麼方法(或方法)?請記住,我也希望這個請求是冪等的。
這是非常好的一點。我想你是對的,我認爲URI是一組資源的嚴格樹形表示。相反,我應該將它們看作只是一種識別方式,其中嵌套意味着指定命名空間。順便說一句,如果我遵循這個假設,GET的反應將如何看起來像一個「團隊」?返回正文中成員的URI是否是好事,或者我應該只返回團隊的屬性而忽略成員?也許包括像「/ teams/123/members」這樣的URI是一種方式嗎? – 2011-06-06 02:58:11
@Oleg我會在你的團隊代表中包含一個指向'/ teams/123/members'的鏈接。 – 2011-06-06 12:29:32
謝謝,我需要一個更多的澄清,請在對'/ teams/123'進行PUT時忽略包含'/ teams/123/members'到請求主體的鏈接是好主意,否則這會混淆客戶端? – 2011-06-06 13:15:34