gpt4 book ai didi

web-services - 根据用户查看权限不同的REST资源内容

转载 作者:行者123 更新时间:2023-12-03 00:45:15 26 4
gpt4 key购买 nike

我想根据访问权限为不同的用户提供同一问题的不同答案。我读过这个问题:

Excluding private data in RESTful response

但我不同意已接受的答案,该答案指出您应该同时提供 /people.xml/unauthenticated/people.xml,因为我的理解REST 的特点是,特定资源应该位于特定位置,而不是多个位置,具体取决于您感兴趣的信息量。

我正在设计的系统比那个系统还要复杂。假设用户创建了多个 friend 圈,并为它们分配了不同的访问权限。例如,我的“熟人”圈子可能可以访问我的生日,我的“专业”圈子可能可以访问我的工作经历,但反之则不然。为了应用我提到的问题的答案,我需要有一种方法来获取所有用户的圈子(出于安全原因我可能想保密),然后通过 /circles/a/users/42/circles/b/users/42/circles/c/users/42等,然后合并结果显示最大可用信息量。 显然,不一定有一个圆圈可以获得其他圆圈获得的所有信息。我相信这已经足够棘手了(请注意,我可能需要对几种对象执行此操作,并且 future 版本可能需要不同的过程),但如果我想对特定用户施加安全限制,尽管他也在我的某些圈子中,该怎么办?这个问题还能解决吗?即使我拒绝回答上述任何一个问题并提出一个可以给我答案的新问题,它仍然会揭示这样一个事实:由于个人访问限制,该特定用户受到了不同的对待。

我在这里缺少什么?我是否有可能开发 RESTful Web 服务?

如果结论是该行为不是 RESTful,那么这是否仍然构成违反 REST 契约在道德上可以接受的情况?如果是这样,会有哪些负面影响?例如,我是否会面临代理缓存问题的风险?

最佳答案

根据菲尔丁的论文(这确实是一篇很棒的文章):

A resource is a conceptual mapping to a set of entities, not the entity that corresponds to the mapping at any particular point in time.

换句话说,如果您有一个定义为“请求用户分配的项目”的资源以及可通过 /projects URI 访问的表示形式,则您不会违反 REST 的任何约束:当用户 A 获取相同的 URI 时,返回一个项目列表(即表示),并为用户 B 返回另一个项目列表(表示)。这样,界面就统一/一致了。

除此之外,REST 仅规定响应中包含显式缓存指令,无论是“缓存这么长时间”还是“根本不缓存”:

Cache constraints require that the data within a response to a request be implicitly or explicitly labeled as cacheable or non-cacheable.

您选择如何管理取决于您。

记住这一点,

只要不违反统一接口(interface)的约束,您应该可以放心地返回一个资源表示,该表示根据请求特定资源表示的用户而变化 - don不要使用单个资源标识符来返回不同资源的表示。

如果有帮助,请考虑服务器也以不同的资源表示形式进行响应 - XML 或 JSON、法语或英语等。随请求发送的凭据只是服务器能够用来确定的另一个因素要发送哪个表示作为响应。 这就是标题部分的用途。

关于web-services - 根据用户查看权限不同的REST资源内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10996328/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com