我有一个具有公共和私人响应的资源,只有一些行列式情况下的用户可以访问私有响应。如何管理RESTful API中的公共和私有资源
什么是最好的实施?
- 两个网址,一个为公众,另一个为私人网站:
resource/{id}
和resource/{id}/private
。 - 相同的网址,对每个用户的响应不同:
resource/{id}
。 - 相同的网址和一个不同的公共和私人的参数:
resource/{id}?private=true
。 - 其他?
我有一个具有公共和私人响应的资源,只有一些行列式情况下的用户可以访问私有响应。如何管理RESTful API中的公共和私有资源
什么是最好的实施?
resource/{id}
和resource/{id}/private
。resource/{id}
。resource/{id}?private=true
。您的术语有点混淆。你有一个资源,和多个representation
s。资源应该有一个规范的位置(URL)。对于不同的用户来说,根据他们的身份验证等级来获得不同的表示是完全正确的。
如果您希望用户能够请求资源的特定表示形式,您有几个选项。如果您使用自定义MIME类型,那么Accept
标题将是最佳选择。如果您不使用自定义MIME类型,那么查询参数是最好的选择,但要确保它在整个应用程序中具有通用性和一致性。不要只使用?private=true
,而应使用?representation=public
之类的东西。这允许您稍后添加表示并使用相同的参数,并与需要指定表示的其他资源共享相同的查询参数。您应该避免使用单独的URL。
IMO 1 resource
应该只有一个URL。您可以使用HTTP中的身份验证令牌来检查服务器是否应使用private
响应或public
响应进行响应。另外,如果某用户请求某些未经授权的资源,则可以发送4xx
状态。
因此resource/{id}
似乎是一个不错的选择。