所以......我知道这个问题可能非常接近基于意见的。我希望不是,并且REST标准清楚我要问的是什么,但如果不是,我会关闭它。
我有一个网站(在Django中,数据存储在Postgres中),Product
( - s)和Category
( - ies)每个category
可以包含多个{{ 1}}( - S)
所以,问题是:什么是“正确”的终点(如果有的话)来获取所有类别中的所有产品?
我相信很清楚获得特定类别的所有产品。例如,如果类别ID为product
,为了获得所有产品,我会写:
24
但是所有类别的每个类别如何?
是http://myserver.com/api/categories/24/products
吗?
是http://myserver.com/api/categories/products
吗?
使用某种参数会更好吗,例如http://myserver.com/api/categories/all/products
?
这个想法会有这样的回应(JSON格式)
http://myserver.com/api/categories?mode=all_products
提前谢谢。
答案 0 :(得分:2)
就REST而言,如果您在网址中唯一地表示资源,使其为cacheable
(并且遵守HATEOAS但让我们跳过该部分),则不会真的很重要你如何构建你的网址。在我看来,由于你想获得所有产品,你的网址应该是
GET /products # to return all products with their associated categories
GET /category/24/products # to return all products belonging to a particular category
注意: - 尽管url结构并不是REST的一部分,但是根据实体/资源和标识符设计url确实可以更轻松地创建RESTful API。结构良好的网址也使客户更容易使用它们。