我正在創建一個基於REST概念的API,但我仍然有點困惑,談論有關資源。如何管理REST API中3個資源之間的關係
我有一個網站,人們可以在多個組中註冊並選擇多個角色。例如,讓我們在公司註冊成爲場景的人:
公司
- Facebook的
- 谷歌
- 蘋果
角色
- 營銷
- 銷售
- 發展
- 客戶支持
所以,當我想創建一個新的公司,某些角色的用戶,我會通過像這樣成POST請求到/用戶端點
{
"username" : "raffaele.izzia",
"email" : "[email protected]",
"groups" : [{
"id" : 1,
"roles" : ["Sales","Customer support"]
},
{
"id" : 2,
"roles" : ["Sales","Marketing"]
}]
}
使用這種方法,一旦我從API獲得一些用戶,我總是知道他們是哪個組/角色。
但是,請求/組端點上的請求呢?
如果我GET/groups/google我也應該收到有關用戶/角色的信息。因此,它可能是這樣的
{
groups: [{
"id" : 2,
"name" : "Google",
"users" : [2,3,4,10,35,50] //role will be included in the single resource once you expand this collection
}]
}
或也許這:
{
groups: [{
"id" : 2,
"name" : "Google",
"roles" : [{
"name" : "Sales"
"users" : [2,3,4,10]
},{
"name" : "Marketing"
"users" : [4,10,8,57]
}]
}]
}
你認爲是對這種關係的最佳解決方案?
是的但在這裏我沒有看到羣/人/角色之間的聯繫。我的意思是,我們應該能夠通過電話回覆的內容是: - 給我Google和Facebook的所有營銷和銷售人員 - 給我某個用戶的所有角色 - 給我所有的人 現在我真的很簡單。只需一個簡單的資源,看起來像這樣 { 「ID」: 「...」, 「用戶」: 「愛麗絲」, 「組」: 「谷歌」, 「角色」: 「營銷」 } –
我認爲這是對一個簡單的問題領域和包含層次結構的有用資源模型的建議的一個很好的探索,儘管OP顯然不理解你的建議。 –