假设我正在开发一个有关购物的应用程序。我定义了以下端点,这些端点是不言自明的:
GET /items
GET /items/{item-id}
GET /stores
GET /stores/{store-id}
现在,我想创建另一个端点,以显示不同商店中单个商品的价格。此价格信息未包含在/items/{item-id}
中,因为我认为不适合将其作为项目的属性,并且获取价格列表需要更多的计算,因为我无法直接返回该对象。我将命名端点/items/{item-id}/prices
并期望这样的响应:
[
{
"store_id": "store_1",
"price": 13.00
},
{
"store_id": "store_2",
"price": 12.99
}
]
我想进一步扩展它并创建另一个端点,该端点返回所有项目的价格信息,但是在命名此端点时遇到了麻烦。到目前为止,我还想到过/items/prices
或/items?display=prices
,但是前者可能与/items/{item-id}
相匹配,而后者可能只是令人困惑,而后者对我来说似乎没有任何意义。 / p>
为端点选择最佳名称是什么,以使其与约定保持一致?
答案 0 :(得分:1)
对于单个商店的所有商品价格表端点,我建议使用GET /stores/{store-id}/prices
或GET /stores/{store-id}/pricelist
。
对于所有商品/商店的价目表,我将使用GET /items/pricelist
或GET /items/*/pricelist
(在/items/{item-id}
之前都是特殊的),{{1}可以根据需要由商店指定}。
答案 1 :(得分:1)
将价格端点添加到项目将是没有意义的,因为项目本身没有任何关系。商店负责决定价格。
我建议将商店端点重命名为/stores/description/{id}
,并添加价格子类别/stores/prices/by-item/{id}
和/stores/prices/by-store/{id}
。
答案 2 :(得分:0)
我想说,对于特殊商品 / prices / {store-id} / {item-id}
以及所有价格 / prices / {store-id}