我想构建我的应用程序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/

10-09 13:28