2012-09-19 72 views
1

我正在設計一個組織組和用戶的REST服務。正確的方法來處理從REST組中刪除成員

例如: GET /組 - 得到所有組 GET /基團/ 1 - 獲取特定組 GET /基團/ 1 /用戶 - 獲取用戶的組 GET /用戶/ 1 - 的實際用戶,可能在多個組中 POST /組/ 1 /用戶 - 使用user_id = 1的發佈參數將用戶添加到組

什麼是適當的方式來處理此問題? 刪除/組/ 1 /用戶/ 1似乎是一種有效的方式來做到這一點,但然後GET到相同的網址將返回資源/用戶/ 1的重複的用戶記錄?

或應該是DELETE/groups/1/users?user_id = 1?

想知道哪個是最可靠的方法來做到這一點。

回答

1

我認爲一個好的設計可以使一個用戶在一個特定組中的成員身份明確 - 作爲一個單獨的資源。因此,組中有用戶和用戶的成員資格。

因此,GET /groups/1/users將返回一個會員資源標識符列表:/groups/1/users/{member_id}您可以在其上執行DELETE。這些「成員資格」當然都與特定用戶相關聯,因此您必須知道哪個member_id與哪個user_id相關聯。這樣做的最簡單方法是使member_id具有與user_id相同的語義,正如您在問題中所建議的那樣(因此/groups/1/users/1意味着「用戶1在組1中的成員身份」)。之後,如果您在/groups/1/users/{member_id}上進行GET,則可以重定向至/users/{user_id}。或者在一個更復雜的例子中,這個資源不會重定向到用戶,而是鏈接到它,並且還包括一些其他信息,例如用戶加入組的日期,她在組中的狀態等。我能想到的其他選項將使用PATCH方法來修改收集資源(/groups/1/users):請參閱http://tools.ietf.org/html/rfc5023。但使用DELETE似乎更自然。

相關問題