对于不同的经过身份验证的用户,同一资源的不同 REST 表示

2024-01-10

我有一个简单的资源,如下所示:

/api/{配置}/参展商/{id}

这通常是一个公共 API,具体取决于 URL 配置部分的设置。

它可能会将此返回给未经身份验证的用户:

{ "a" : "some value", "b" : "other value" }

但是,如果管理员已登录并想要获取此资源,他们会期望同一资源上有一些略有不同的数据:

{ "a" : "some value", "C" : "admin only value" }

我是否应该检测此管理权限并从同一 URL 返回不同的内容?

或者我应该有一个新的 URL 来标识它的用途并且内容可能会有所不同?

/api/admin/{配置}/参展商/{id}

我的想法是,我不喜欢额外的 URL,但如果我不会根据用户更改内容,我将更容易缓存公共内容。

管理员调用没有理由无法获取资源的完整公共版本以及附加的仅限管理员字段,但在我的示例中它们可能实际上不需要字段“b”,所以我宁愿使用管理员表示有点轻了。


根据具体情况,这两种选择都是可行的。正如您所提到的,允许表示形式的变化将使缓存变得困难。然而,支持不同的资源会产生额外的开销。理想情况下,您的服务器端框架可以轻松创建额外的资源,因此开销应该是最小的。

另一个选项是返回公共版本并提供指向仅包含附加“仅管理”属性的资源的嵌入式超链接。如果您的客户可以轻松处理超媒体,那么这将成为一个相当灵活的选择。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对于不同的经过身份验证的用户,同一资源的不同 REST 表示 的相关文章

随机推荐

  • 实体框架与 LINQ to SQL [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 现在 NET v3 5 SP1 已经发布 与 VS2008 SP1 一起 我们现在可以访问 NET 实体框架 我的问题是这样的 当尝试决定使用实
  • 使用 AES 在 C# 中进行文件加密,使用 phpseclib 进行解密

    我正在开发一个安全文件传输项目 该项目在客户端使用 C 客户端对文件进行加密 我需要使用 php 或者 phpseclib 在服务器端解密文件 这里的代码是我从 msdn 示例中复制的 但我无法计算出 php 中的解密函数 public s
  • CountDiv (Codility) 挑战算法的性能问题

    需要一些关于我为解决这个 codility 挑战而制定的算法的帮助 编写一个函数 给定三个整数 A B 和 K 返回 A B 范围内可被 K 整除的整数个数 例如 对于 A 6 B 11 和 K 2 您的函数应返回 3 因为在范围 6 11
  • 如何使用结构指令更改边框?

    我正在尝试创建一个可以做两件事的角度指令 1 change border of the host element 2 append a button at the end of the host element 截至目前 我已经迈出了第一步
  • 无法使用在线签名模式创建信封

    我正在尝试创建一个信封并使用在线模式对其进行签名 首先 我登录了我的帐户 IBAction private func signDocument sender UIButton guard let hostURL URL string Env
  • 如何创建一个返回 const 值的工厂构造函数

    是否有可能返回 as const 的不同实现 abstract class Foo
  • 玩笑安全cookies?

    My Jest https facebook github io jest 测试设置为在 CI 上运行时模拟我的后端响应 但环境变量允许它们在本地针对真实后端运行 问题是我们现在已经将身份验证切换为使用安全的 仅限 http 的 cooki
  • 如何使用Python默认浏览器打开和关闭网站

    我正在尝试在Windows平台上编写一个Python脚本来打开一个网页 例如Google 然后在10秒后关闭该网站 注意 我使用的是 Windows 7 Python 2 7 10 和 IE 您可以使用Python内置的webbrowser
  • 工具栏上均匀分布的菜单项

    所以我一直在尝试实施android support v7 widget Toolbar在我的 Activity 中 并使其看起来类似于以前支持的拆分 ActionBar 这是我的工具栏的 XML
  • java SAXParser 忽略异常并继续解析

    我有一个 java 类 它解析 xml 文件 并将其内容写入 MySQL 一切正常 但问题是当 xml 文件包含无效的 unicode 字符时 会引发异常并且程序停止解析文件 我的提供商每天发送这个 xml 文件 其中包含产品列表及其价格
  • Java String.valueOf(jsonArray) 将 jsonArray 中的 UTF-8 编码内容变成问号

    我有这个 json 数组 JSONArray 类型 其中包含 utf 8 编码的字符串 success true data moduleTitle title status 200 然后我想获取它的字符串值 String s String
  • 无法让 GoogleMap OnMarkerClickListener 工作

    使用 V2 地图 一切基本正常 包括添加标记 但是 我需要在点击标记时采取行动 因此我安装了一个处理程序 thisMap setOnMarkerClickListener new GoogleMap OnMarkerClickListene
  • 如何为 Blogger 添加国际化支持?

    如何为 Blogger 添加国际化支持 是否可以在一个博客中处理多种语言 是否可以添加自己的翻译而不使用谷歌翻译小部件 http translate google com translate tools Thanks 这些应该设置在博客的
  • 如何从元组列表中删除项目? [复制]

    这个问题在这里已经有答案了 我想使用索引列表从元组列表中删除项目 mytupList 1 2 2 3 5 6 8 9 indxList 1 3 我尝试过像这样使用 numpy newtupList numpy delete mytupLis
  • Excel VBA 类似运算符 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在使用 Excel VBA 搜索另一个字符串中的子字符串 如下所示 Dim pos As Integer pos InStr I am
  • RestAssuredMockMvc 连接到 http://localhost:8080 被拒绝

    我使用 REST 方法开发了一个 Spring MVC Web 应用程序 我很想使用 RestAssured 创建 JUnit 测试类 从文档来看 它看起来非常简单 但我遇到了一些问题 基本上我想用它来避免运行时 Tomcat 实例 但问题
  • 如何测试当前是否正在播放声音?

    我一直在努力掩盖
  • 如何使用 ionic 框架在 IOS 上获取 IMEI

    如何使用 ionic 框架在 IOS 上获取 IMEI 您可以使用 设备 对象Cordova http cordova apache org docs en 2 5 0 cordova device device md html 设备对象描
  • 编译器和负数表示

    最近我很困惑这个问题 https stackoverflow com questions 700410 subtraction without minus sign 700487 700487 也许是因为我没有阅读语言规范 我知道这是我的错
  • 对于不同的经过身份验证的用户,同一资源的不同 REST 表示

    我有一个简单的资源 如下所示 api 配置 参展商 id 这通常是一个公共 API 具体取决于 URL 配置部分的设置 它可能会将此返回给未经身份验证的用户 a some value b other value 但是 如果管理员已登录并想要