json - 如何在 RESTful API 中管理公共(public)和私有(private)资源

标签 json rest http api-design

我有一个资源,它有一个公共(public)响应和一个私有(private)响应,只有一些处于决定性情况的用户可以访问私有(private)响应。

什么是最好的实现?

  1. 两个 url,一个用于公共(public),另一个用于私有(private):resource/{id}resource/{id}/private
  2. 相同的 url,每个用户的不同响应:resource/{id}
  3. 具有相同的 url 和一个区分公共(public)和私有(private)的参数:resource/{id}?private=true
  4. 其他?

最佳答案

您的术语有点困惑。您有一个资源和多个 representation。该资源应具有一个规范位置 (URL)。不同的用户根据他们的授权级别获得不同的表示是完全没问题的。

如果您希望用户能够请求资源的特定表示,您有几个选择。如果您使用自定义 MIME 类型,Accept header 将是最佳选择。如果您不使用自定义 MIME 类型,查询参数是您最好的选择,但要确保它在整个应用程序中是通用的和一致的。不要只使用 ?private=true,而是使用类似 ?representation=public 的东西。这允许您稍后添加表示并使用相同的参数,并与需要指定表示的其他资源共享相同的查询参数。您应该避免使用单独的 URL。

关于json - 如何在 RESTful API 中管理公共(public)和私有(private)资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41234654/

相关文章:

php - 如何注销发回页面以验证我是否要使用 php 和 curl 注销的网站

javascript - D3 JS图表在添加X和Y轴标签后被切断

javascript - 如何更改 JSON 结构

html - 如何使用 GET 请求从 http ://moz. com 获取域权限?

java - 如何在 spring security 4 xml 配置中禁用特定 url 的安全性以检索访问 token

http - 如何构造一个不需要主体的 POST 请求

python - json 的 urllib 请求与浏览器中的 json 不匹配

javascript - 在React中访问子级的父级状态

php - 将 Angular 6 应用程序连接到 DreamHost 上托管的 php/mysql 数据库的服务

python - 将队列传递给 ThreadedHTTPServer