用户基本上可以将其他用户添加为好友。因此,我不是创建另一个用户资源,而是链接两个资源。
问题
- 处理这个问题的最佳策略是什么?
- 适合这种情况的动词是什么?
我听说有一个LINK
动词,这似乎是合适的。
我还读到,我可以使用 PATCH
动词在资源上应用补丁。
如果可以的话我可以这样做吗
PATCH /users/{id}/friends
最佳答案
您可以考虑创建一个新对象。
如果您分离出友谊
对象,您将能够创建和修改它们,而无需更新用户。每个友谊都有两个用户 key 。这也是一个悬挂有关友谊的额外信息的好地方,例如“好友”值。
POST /friendships
{
primaryUser: 43,
secondaryUser: 3
since: "03/16/2010"
}
201 CREATED
location: /friendships/635
然后可以编写对用户 43 的查询,以包含用户 ID、好友 ID 或嵌入对象的数组。
GET /users/43
200 SUCCESS
{
id: 43,
name: "john",
friends: [3]
}
或者
200 SUCCESS
{
id: 43,
name: "john",
friends: [635]
}
或
200 SUCCESS
{
id: 43,
name: "john",
friends: [
{
id: 635,
primaryUser: 43,
secondaryUser: 3,
since: "03/16/2010"
}
]
}
更新/删除的语义更加直接。在我看来,“删除”友谊看起来是 DELETE
而不是 PATCH
或 PUT
更好。
关于http - Rest API - 好友集合创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12426406/