Pat*_*llo 1 rest uri restful-url restful-architecture
必须创建一个具有管理员权限的RESTful Web服务,并且普通用户可以访问资源(比如说汽车),我想为用户构建Uri:
http://myhost/users/5/cars/2
Run Code Online (Sandbox Code Playgroud)
但是,作为管理员用户,我想访问所有汽车,例如:
http://myhost/cars/51
Run Code Online (Sandbox Code Playgroud)
与我提出的第一个建议相比,您是否认为最好只为汽车使用一个Uri,为用户使用过滤器,例如:
http://myhost/cars/?user=5
Run Code Online (Sandbox Code Playgroud)
同一资源没有两个不同的Uris?您还有其他建议吗?
以下两个URL都很好,即使对于普通用户来说,对于管理员也是如此。Auth-token应该在HTTP会话中,因此服务器应该能够检测出请求者是否为admin。
http://myhost/cars返回汽车的集合。建议根据授权对退回的汽车进行过滤。如果我是管理员,我可以看到所有汽车。如果我是用户#5,则可能只能看到我的车。因此,管理员和普通用户都可以使用相同的URL。
在http://myhost/cars/?user=5使用显式过滤器的情况下,即使我是其他人,我也对用户#5的汽车感兴趣。可能我得到了一个空列表,因为我无权看到任何物品。此URL也可以。
http://myhost/cars/51表示我想直接进入51号车。不管我是否是管理员,都没有关系。如果我无权查看此实体,则可能会收到4XX消息(XX是另一个辩论)。