我想构建我的应用程序RESTFul。
什么是子对象的普通URI概念。
我的例子:
我有一些用户。我通过/users/:id
获得了一个用户。现在可以对该用户进行评分。是通过/users/:id/ratings
执行userRatings(GET,POST,PUT,DELETE)或通过/ratings/
将它们作为自己的对象处理的最佳概念。还是两者兼而有之?
我的问题:
当它是/ratings/
时,我如何获得特定级别的评级列表
用户(/ratings/?userId=1?
)。
该对象通常是URI的复数吗?
最佳答案
URL方案在很大程度上取决于您需要对数据模型进行的操作,例如您想如何查询这些评分:
如果您只想显示单个用户的评分,请将其放在/users/:id/ratings
下
如果您想要“ 10个最受好评的用户”之类的东西,请考虑使用GET /users?toprated
之类的东西-在这里您正在寻找用户,因此该网址应通过/users
来表示
如果您想获得多个用户的评分,例如要查找所有包含“杰出”一词的评分,/ratings/
更有意义:搜索自然地表示为GET /ratings?q=outstanding
-在这里您需要评分,因此URL应为/ratings
加上请求参数以限制哪种类型您想要的评分
无论哪种情况,除非您要构建一个巨大的公共API并在发布之日就期望有很多客户,否则请选择可行的方法并根据需要更改URL方案。
至于单数/复数的争论:对路径段使用复数,即/users
,/ratings
,因为它自然地遵循REST的“资源”和“资源集合”的构造块:在(接受GET,POST),并且在/users
处只有一个用户(接受GET,PUT,DELETE)。
关于java - 子对象的REST URL概念,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21352392/