我正在创建一个RESTful and服务,我的URL如下所示:
GET /pets对于普通用户,这应该只返回属于该用户的宠物。但是对于管理员,它应该返回系统中的所有宠物。这样做不对吗?或者我应该这样做
GET /pets?ownedBy=Smith并且只有当用户是Smith或管理员时才允许访问宠物?
发布于 2013-12-21 11:11:55
我认为REST规范并没有特别提到任何关于它的内容。但是IMPO,我相信它是完全正确的返回结果,根据请求的用户。网址应尽可能清洁。如果用户信息已经作为标题的一部分存在,则不需要在URL中冗余地提供这些信息。
发布于 2013-12-21 11:17:13
虽然Juned Ahsan的回答完全正确,但我可能会修改您的URLs模式,如下所示
得到/史密斯/宠物:把宠物还给史密斯先生
现在可以在URL中进行一层授权,URL始终表示相同的资源。我倾向于使用此解决方案,因为在其之上添加缓存层会更容易。将用户(从HTTP头)添加到缓存键并不有效,也不容易为某些缓存解决方案进行配置。
发布于 2013-12-21 11:15:29
我只会提供它在URL中,如果你也有情况下,它是有效的,把别人的名字在那里。例如,如果人们能够看到他们的朋友宠物,或者如果和管理员能够看到被选中的人的宠物。
因此,在有一个用户使用该参数的情况下,公开它并始终使用它是有意义的。
如果不是这样的话,那么API中的简单性通常是一件好事。
回答你问题中的“可以”和“应该”--这是完全可能的。确切地说,如何实现它将取决于您正在使用的框架,但它们都将支持这一点。
https://stackoverflow.com/questions/20718337
复制相似问题