【发布时间】:2010-10-18 21:38:18
【问题描述】:
如何轻松地为角色视图建模?
假设我有一个可供买家或卖家查看的资源(有些内容在资源上由他们共享,有些内容对每个人都是独一无二的)
我是否应该将它们设为单独的资源: /resource/1/buyer, /resource/1/seller
或者我应该传递一个格式: /resource/1?viewer=seller
【问题讨论】:
如何轻松地为角色视图建模?
假设我有一个可供买家或卖家查看的资源(有些内容在资源上由他们共享,有些内容对每个人都是独一无二的)
我是否应该将它们设为单独的资源: /resource/1/buyer, /resource/1/seller
或者我应该传递一个格式: /resource/1?viewer=seller
【问题讨论】:
我不会把它放在任何地方。相反,我会让相同的 URL 根据经过身份验证的用户显示资源的适用部分。
用户的角色在身份验证时已经确定,要求在查询中复制数据是没有意义的。想象一下,您有一个复杂的用户权限系统。然后你会让用户在 URL 中复制他们的整个 ACL 吗? :/ 这样用户甚至不必知道它的角色。
如果视图根本不同(例如,根本不共享任何字段或字段具有不同的语义),那么我将创建两个资源(/auction/1/buyer-info、/auction/1/seller-信息)。但这可能不是这里的情况。
如果用户可以选择同一资源的多个视图,那么我会将视图放在查询参数 (?view=simple) 中,因为它没有与资源本身有关,但实际上是“查询的参数”。但请记住,这里的查询参数是“view”,而不是“viewer”(就像在您的示例中一样),IMO 是一个重要的区别。
通过这三种方法,您可以缓存资源,然后根据a)当前用户和b)视图查询参数从中剥离相关数据。
【讨论】: