我有用户,我有组
GET /user/1 -> {id:1,name:"john"}
GET /user/2 -> {id:2,name:"sam"}
GET /group/1 -> {id:100,name:"myGroup"}
显然,组对用户是多对多的关系。忽略存储实现,我试图找出最合理的方式来表示它。
/user/1/group // lists the groups of which "john" is a member, e.g. [100]
/group/100/user // lists the users who are members of "myGroup", e.g. [1]
一?另一个?两个都?
更进一步,如果我允许 sam 看到 john(但没有其他人),因为他们都是 100 组的成员,该怎么办?从概念上讲,LinkedIn 或 Facebook 同样允许您在连接后查看某人的信息。
因此,如果 john (1) 请求有关 sam (2) 的信息,我应该这样做:
/user/2 // allows it, with some backend mechanism finding the memberships of sam and john, and then finding that they are in the same group?
或者
/group/1/member/2 // this is john saying, "I want to access user 2 who is a member of group 1 and so am I"
第二个选项使请求解释为什么它们应该在一起,并使逻辑更简单。另一方面,用户 2 已经是的资源/user/2
,所以备用路线似乎很奇怪?