以分层的方式创建资源URI有一个好处,就是您不会遇到任何ID冲突的问题。如果您添加另一种资源类型(例如“角色”)并具有ID“test”,则您的替代版本
http://test:password@site.com/test/
可能会出现问题。您必须确保您的ID在所有资源类型上都是唯一的,而不仅仅是针对特定类型。此外,您的资源URI指向用户还是角色已经不再清晰。
虽然REST不一定需要,但对于我们人类来说,这是使REST API更易于理解的命名之一:“用户资源可以在包含“users”标签的URI中找到”。REST本身实际上是URI无关的,所以它真的不应该有所区别。但是,如果您想使用有意义(可读性强)的URI,我会建议您这样做。
GET http://test:password@site.com/users/
将返回所有用户。
POST http://test:password@site.com/users/
将创建一个新用户并分配新的URI新资源。
PUT http://test:password@site.com/users/test
将更改标识为此URI的用户资源,为实现合理的期望,您应该能够获取此用户资源
GET http://test:password@site.com/users/test
最后需要考虑的是:授权用户可能希望访问不同用户的用户资源(目前这种情况似乎不太可能出现)。
GET http://another:password@site.com/users/test