首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >RESTful web服务中的urls可以为具有不同授权级别的用户做不同的事情吗?

RESTful web服务中的urls可以为具有不同授权级别的用户做不同的事情吗?
EN

Stack Overflow用户
提问于 2013-12-21 11:07:57
回答 6查看 72关注 0票数 2

我正在创建一个RESTful and服务,我的URL如下所示:

代码语言:javascript
运行
复制
GET /pets

对于普通用户,这应该只返回属于该用户的宠物。但是对于管理员,它应该返回系统中的所有宠物。这样做不对吗?或者我应该这样做

代码语言:javascript
运行
复制
GET /pets?ownedBy=Smith

并且只有当用户是Smith或管理员时才允许访问宠物?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-12-21 11:11:55

我认为REST规范并没有特别提到任何关于它的内容。但是IMPO,我相信它是完全正确的返回结果,根据请求的用户。网址应尽可能清洁。如果用户信息已经作为标题的一部分存在,则不需要在URL中冗余地提供这些信息。

票数 5
EN

Stack Overflow用户

发布于 2013-12-21 11:17:13

虽然Juned Ahsan的回答完全正确,但我可能会修改您的URLs模式,如下所示

得到/史密斯/宠物:把宠物还给史密斯先生

现在可以在URL中进行一层授权,URL始终表示相同的资源。我倾向于使用此解决方案,因为在其之上添加缓存层会更容易。将用户(从HTTP头)添加到缓存键并不有效,也不容易为某些缓存解决方案进行配置。

票数 3
EN

Stack Overflow用户

发布于 2013-12-21 11:15:29

我只会提供它在URL中,如果你也有情况下,它是有效的,把别人的名字在那里。例如,如果人们能够看到他们的朋友宠物,或者如果和管理员能够看到被选中的人的宠物。

因此,在有一个用户使用该参数的情况下,公开它并始终使用它是有意义的。

如果不是这样的话,那么API中的简单性通常是一件好事。

回答你问题中的“可以”和“应该”--这是完全可能的。确切地说,如何实现它将取决于您正在使用的框架,但它们都将支持这一点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20718337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档