具有匿名/识别访问的 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 API 的最佳实践

Rest Web 服务:具有令牌安全性的匿名和经过身份验证的用户

访问自己/自己的对象的 REST API 最佳实践

Spring Boot REST API 端点映射最佳实践

使用 Express 和 NodeJS 构建 REST API 的最佳实践

利用 Active Directory 的 REST API 授权方法