我有一个简单的资源,如下所示:
/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(使用前将#替换为@)