如何在资源上建模不同的视图(角色)?

时间:2009-04-11 11:26:41

标签: rest roles

如何重新设计角色视图?

假设我有一个可以由买家或卖家查看的资源(某些内容在资源上共享,有些内容在每个内容中都是唯一的)

我应该将它们作为单独的资源: / resource / 1 / buyer,/ resource / 1 / seller

或者我应该传递一种格式: /资源/ 1?观察者=卖方

1 个答案:

答案 0 :(得分:2)

我不会把它放在任何地方。相反,我将使用相同的URL显示基于经过身份验证的用户的资源的适用部分。

用户的角色在进行身份验证时已经确定,无需在查询中复制数据。想象一下,你有一个复杂的用户权限系统。那么你会让用户在URL中复制他们的整个ACL吗? :/这样用户甚至不必知道它的角色。

如果视图根本不同(例如,根本不共享任何字段或字段具有不同的语义),那么我将创建两个资源(/ auction / 1 / buyer-info,/ auction / 1 / seller-信息)。但这可能不是这种情况。

如果实际上有用户可以选择的同一资源的多个视图,那么我将视图放在查询参数中(?view = simple),因为它没有属于资源本身,但实际上是“查询的参数”。但请记住,这里的查询参数是“view”,而不是“viewer”(就像你的例子中一样),IMO是一个重要的区别。

通过遵循这三种方法,您可以缓存资源,然后根据a)当前用户和b)视图查询参数从中删除相关数据。