我有一个类似这样的简单资源:
/api/{configuration}/exhibitors/{id}
这通常是一个公共 API,具体取决于 URL 的配置部分的设置。
它可能会将其返回给未经身份验证的用户:
{ "a" : "some value", "b" : "other value" }
但是,如果管理员登录并想要获取此资源,他们会期望在同一资源上出现一些稍微不同的数据:
{ "a" : "some value", "C" : "admin only value" }
我是否应该检测此管理员权限并仅从同一 URL 返回不同的内容?
或者我应该有一个新的 URL 来标识它是为谁服务的并且内容可能不同?
/api/admin/{configuration}/exhibitors/{id}
我的想法是我不喜欢额外的 URL,但如果我不会根据用户更改内容,我将更容易缓存公共内容。
管理员调用没有理由无法获取资源的完整公共版本以及额外的仅限管理员字段,但在我的示例中它们可能实际上不需要字段“b”,所以我宁愿管理员表示有点轻。