如何在 RESTful API 中管理公共和私有资源

Joa*_*ano 4 rest json api-design http

我有一个具有公共和私有响应的资源,并且只有某些处于决定性情况的用户可以访问私有响应。

最好的实施是什么?

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

Eri*_*ein 5

你的术语有点混乱。您有一个资源和多个representation资源。资源应该有一个规范位置 (URL)。对于不同的用户来说,根据他们的身份验证级别获得不同的表示是完全可以的。

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