我想构建我的应用程序RESTFul。
什么是subObjects的普通URI概念。
我的例子:
我有一些用户。我通过/users/:id
获得了一位用户。现在这个用户可以评级。最好的概念是在/users/:id/ratings
上执行userRatings(GET,POST,PUT,DELETE),或者将它们作为/ratings/
上的自己的对象处理。或两者兼而有之?
我的问题:
/ratings/
如何获得特定的评级列表时
用户(/ratings/?userId=1?
)。答案 0 :(得分:2)
网址方案取决于主要取决于您对数据模型的处理方式,例如你想如何查询这些评级:
如果您只想显示单个用户的评分,请将它们放在/users/:id/ratings
如果您需要类似“10位顶级用户”的内容,请考虑GET /users?toprated
之类的内容 - 此处您正在寻找用户,因此网址应表示成为/users
如果您希望在多个用户中获得评分,例如要查找包含“杰出”字样的所有评分,/ratings/
更有意义:搜索自然表示为GET /ratings?q=outstanding
- 您需要评分,因此网址应为/ratings
加上请求参数以限制您想要的评级类型
在任何一种情况下,除非您正在构建庞大的公共API,并且在发布日期望大量客户,否则请使用可行的方法并根据需要更改URL方案。
至于单数/复数辩论:对路径段使用复数,即/users
,/ratings
因为它自然地来自REST的“资源”构建块, “资源集合”:/users
有一组用户(接受GET,POST),/users/:id
有一个用户(接受GET,PUT,DELETE)。