用户可以拥有对REST资源的不同权限。像删除或编辑资源一样。子资源也可以拥有不同的用户权限。
示例:
GET /cats -> return all cats
GET /cats/{id} -> return cat {id}
UPDATE /cats/{id} -> update cat {id}
POST /cats/{id}/like -> create a like to the cat {id}
DELETE /cats/{id}/like -> delete your like to the cat {id}
当用户请求cat资源时,我想向他显示权限(允许的操作)和对象的状态。
在这个例子中:
我们的UI应该使用此信息来显示对象的允许操作:
如何将此信息添加到资源响应中。应该可以将信息添加到一个资源,也可以添加到对象列表。
我想到了所有允许操作的http标头中的链接。但这只能用于一个物体。他们是更好的解决方案吗?
答案 0 :(得分:1)
我不清楚为什么你不能在包含该集合的响应的标题中包含特定于集合的链接。我会告诉你,那是不可能的,但似乎它应该是一种选择。
另一种选择是在响应数据周围使用信封。这将允许您在集合级别包括元数据,包括链接。
GET /cats?owner=12
{
"totalRecords": 2,
"links": [ ... ],
"records": [ ... ]
}
编辑(基于评论)
您应该将links
属性添加到cat
表示中,作为信封或直接属性。所以你的猫看起来像:
GET /cats/354
{
"name": "Poke",
...,
"links": [
{ "rel": "like", "href": "/cats/12/like" },
....
]
}
然后,您收藏中的每个cat
都会有与之关联的相关链接。这是使用link
标头的普遍接受的替代方法。
变体:
{ "rel": "like", "verb": "POST", "href": "/cats/12/like" }
"links": { "like": "/cats/12/like", "delete": "/cats/12" }