对于不同的经过身份验证的用户,同一资源的不同 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 表示 的相关文章

  • 通用开源 REST 客户端? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 为什么我们需要 RESTful Web 服务?

    我将学习 RESTful Web 服务 最好说我必须这样做 因为它是 CS 硕士学位课程的一部分 我在 Wikipedia 上阅读了一些信息 还在 Sun Developer Network 上阅读了一篇有关 REST 的文章 我发现这不是
  • 在 Spring 应用程序中拥有 RestController 和 Controller 的最佳实践

    我不是问是不是possible 我知道是这样 但我想知道在我的应用程序中拥有前端的同时提供休息服务的最佳方式是什么 我正在开发一个 Spring Boot 应用程序 我目前有一个调用 jsp 页面的控制器 以及一个separate休息控制器
  • 使用资源控制器的存储方法上的 Laravel 5.1 MethodNotAllowedHttpException

    我正在尝试利用资源控制器将记录添加到数据库 但是收到 MethodNotAllowedHttpException 错误 我已经经历过几个类似的问题 比如this https stackoverflow com questions 29327
  • 使用 authlogic_api 进行 Rails REST API 访问

    我正在为 Steam 游戏编写 Rails 后端 API 该游戏只能通过 REST 调用访问 因此不需要特定于用户的身份验证 我正在努力实施authlogic api 插件 http github com phurni authlogic
  • 为移动应用程序创建 API - 身份验证和授权

    Overview 我正在寻找为我的应用程序创建一个 REST API 最初 主要目的是供移动应用程序 iPhone Android Symbian 等 使用 我一直在研究基于 Web 的 API 的身份验证和授权的不同机制 通过研究其他实现
  • 如何向最终用户隐藏 REST API Url?

    是否可以隐藏我通过 AJAX 用于填充页面数据的 REST URL 我不希望其他人从我的 REST API 获取和使用 但需要使用它在我的网站中显示内容 如何向最终用户隐藏我的 REST API URL 无法在 JavaScript 中向最
  • 如何进行 REST 式更新?

    如果我有一个对象 请说Employee 我想提供两种不同的更新方式 更新绩效评级或更新联系信息 构建 API 的 REST 式方式是什么 我认为正确的方法是 POST 我担心的是 对于用户来说 首先获取对象的两个部分 绩效评级和联系信息 仅
  • 从 Office 365 日历获取所有事件

    我需要获取 Office 365 日历中的所有事件 当前 GET 请求 https graph microsoft com v1 0 users https graph microsoft com v1 0 users userPrinci
  • 如何将 REST API 与 FireMonkey 结合使用?

    我需要在 FireMonkey 中实现 REST API 来获取一些信息 但我不确定如何做到这一点 REST API使用OAuth2 我可以访问两个代码 Consumer Key和Consumer Secret 之后 我需要获得一个临时的
  • 在 C# 控制台应用程序中使用 HttpClient 使用 WEB API

    我使用 MySQL 数据库在 Visual Studio 2015 中创建了一个 Web API API 运行完美 所以我决定做一个控制台client http www c sharpcorner com article web api w
  • 来自复杂对象的 spring RestTemplate POST 参数

    我正在尝试使用 postForObject 方法使用restTemplate 来测试我们的REST 服务 单元测试 Test public void testPostOrder String url BASE URL orders Orde
  • REST - 获取随机数 GET 还是 POST?

    应该如何在 REST 中正确实现随机数生成器 GET RANDOM or POST RANDOM 服务器每次返回不同的随机数 我可以看到这两种方式的论点 我想说这与返回的包含当前时间的页面相同 其中许多都是使用 GET 完成的 抽象地说 获
  • 为什么“FormDataMultiPart”类型参数被区别对待

    我正在编写一个小网络应用程序 将文件上传到网络服务器 我一切正常 但令我感到困惑的是 几乎所有从客户端 浏览器 发送的参数都必须在服务器端注入单词 FormDataParam except FormDataMultiPart类型参数 有人可
  • 用于 RESTful 轨道应用程序的简单面包屑

    是否有任何辅助方法 除了默认 Rails 面包屑导航 http wiki rubyonrails org rails pages Breadcrumbs 为特定页面动态生成面包屑导航 而无需在 RESTful 应用程序中传递琐碎的参数 也就
  • 当前用于验证 Http 请求(REST、Xml over Http)的标准是什么?

    该标准应解决以下身份验证挑战 例如 重放攻击 中间的人 明文攻击 字典攻击 暴力攻击 被假冒服务器欺骗 我已经研究过 Amazon Web Services 这是一种可能性 更重要的是 似乎有两种最常见的方法 使用 apiKey 它的编码方
  • 使用 AFNetworking 重置基本身份验证凭据

    我正在编写一个 REST 客户端 使用 AFNetworking 并且需要能够在应用程序的单个实例中触发新会话的创建 换句话说 我想 1 通过服务器进行身份验证2 进行一些 REST 调用3 模拟 注销 4 重新与服务器进行身份验证5 进行
  • 对于一般不成功的请求(不是错误),适当的 HTTP 状态代码响应是什么?

    我正在创建一个 RESTful API 它将处理许多用户交互 包括使用存储的信用卡下订单 如果订单成功 我将返回 200 OK 如果订单请求格式错误或无效 我将返回 400 Bad Request 但如果订单实际处理过程中出现问题 我该怎么
  • 3rd party API 返回 500 错误,我的 API 应该返回什么代码

    我在基于 ZF2 Zend Framework 2 的框架中编写了一个 API 称为 Apigility 我的服务可以查询第 3 方 API 偶尔 我会收到 500 错误消息 要么是由于令牌过期 要么是其他原因 我的 API 应如何响应我的
  • 如何在 Laravel 中使用 PUT http 动词提交表单

    我知道这个问题可能已经提出 但我就是无法让它发挥作用 如果有人可以帮助我 我将非常感激 我安装了 colletive form 但答案也可以是 html 表单标签 现在列出我的表格 我的路线和我的例外情况 Form model array

随机推荐

  • 实体框架与 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 但是 如果管理员已登录并想要