我正在使用Spring Boot(由JHipster生成)。
我有以下服务:
/api/market/
/api/market/:id
和
/api/product/
/api/product/:id
所有使用GET,PUT,POST和DELETE的人。但我需要实施一项更具体的服务。
此服务应返回市场内的所有产品X
。但要做到这一点,我打算传递这个调用的URL路径:/api/product?marketID=1
,但我必须在市场表中进行选择然后获得产品(将更容易在一个表中搜索到market_id
字段)。
我不知道这个网址是否是最佳结构以及此类搜索。我知道你可以在桌子上搜索你做过滤器的特定字段,但是我测试了,我无法获得关系字段。
答案 0 :(得分:3)
我想就如何构建您的API提出建议,然后为您的问题提供可能的答案。
通常,RESTful API遵循复数 - 单数原则:给定所有市场(复数部分),找到ID为5231422的市场(单数部分)。使用/api/{plural-noun}/{singular-identifier}
在您的网址中进行反映。所以你的API看起来会更像这样:
/api/products (all products in the system)
/api/products/:productId (a single product in the system)
/api/markets (all markets in the system)
/api/markets/:marketId (a single market in the system)
要回答您的问题,那么:我建议您使用"俄罗斯堆叠玩偶"网址设计。您的设计似乎表明单个市场可以包含多个产品。因此,您可能会发现这种URL更清晰:/api/markets/:marketId/products
,它可以获取该市场中的所有产品。
答案 1 :(得分:2)
通常,您希望您的网址具有语义和可导航性。所以基于你已经得到的东西:
/api/market/:marketId/product
此外,通常建议使用复数,因此我会执行以下操作:
/api/markets/:marketId/products