具有匿名/识别访问的 REST API 的最佳 URI 模式是啥?
Posted
技术标签:
【中文标题】具有匿名/识别访问的 REST API 的最佳 URI 模式是啥?【英文标题】:What's the best URI schema for REST API with anonymous/identified access?具有匿名/识别访问的 REST API 的最佳 URI 模式是什么? 【发布时间】:2011-12-09 23:23:29 【问题描述】:我创建了一个 API 来访问这些用户拥有的用户和对象。对象可以由作者或某种版主/监督者匿名访问。
在所有这三种情况下,一组字段可以不同(或者可以相同 - 尚不清楚);至少匿名模式和识别授权模式是不同的。
假设我们有一个用户 456,这个用户拥有一个对象 123。
主要问题是: 这种情况下最好的 URI 模式是什么,每种模式的优缺点是什么:
第二个问题是: 这些资源是相同的还是同一实体的不同资源?
一个单一的 URI 用于所有对象,输出取决于身份的缺失或存在:
/objects.json?criteria=xyz&user=456 -- 结果取决于身份和“用户” /objects/123.json -- 结果取决于身份 /users/456.json匿名访问和识别访问的不同 URI,就好像它们是不同的资源一样:
/objects.json?criteria=xyz -- 仅匿名 /objects/123.json -- 仅限匿名 /users/456.json /users/456/objects.json -- 仅识别 /users/456/objects/123.json -- 仅识别还有别的吗?
UPD:刚刚发明:
/objects/123 -- basic info, same for anonymous&identified
/objects/123/extra -- different kinds of extra info,
/objects/123/extended -- ... or extended representations,
/objects/123/meta -- ... only for authorized roles for each.
/objects?criteria=xyz -- common search for objects
/users/456/objects -- objects owned by user only
在公共列表和每个用户列表(列表是入口点)中有额外资源的 URI,具体取决于使用的列表。
通过这种方法,我们拥有指向资源的 URI,这些 URI 不会因请求用户的身份而异。但是我们仍然可以控制我们向请求用户提供或不提供哪些信息。并且 URI 不会以任何方式或方式重复。完美!
【问题讨论】:
是的,您更新的 URI 列表很有意义。 【参考方案1】:假设问题已在上述 UPD 中得到解答。这个伪答案是为了结束问题。
【讨论】:
以上是关于具有匿名/识别访问的 REST API 的最佳 URI 模式是啥?的主要内容,如果未能解决你的问题,请参考以下文章
Rest Web 服务:具有令牌安全性的匿名和经过身份验证的用户