用于嵌套资源的 RESTful API

问题描述 投票:0回答:2

我有两个实体

Hotel
Merchant
,每个商家可以拥有许多酒店。现在我有一个像这样的 API 端点:

/api/v1/merchants/{id}/hotels/{id}

但我在想这个语义有什么问题:

/api/v1/hotels/{id}

后一篇也很短

rest web-applications restful-url
2个回答
2
投票

根据我的经验,后者更可取,因为它可以为您提供更大的灵活性。六个月后,有人会说“嘿,我希望能够查找阿格拉巴的所有酒店”。第一个 URL 方案让这很痛苦 - 您需要添加一个新端点。第二个 URL 方案通过查询参数支持该方案:

GET /hotels?location=Agraba

您可能希望将

/merchants/{id}/hotels
保留为收集端点,以便您可以发布/删除以添加/删除特定商家的酒店。


0
投票

REST
中,每个
URL
应唯一标识一个资源。

因此,如果酒店的

id
是全球唯一的,那么使用较短的链接当然没有问题。然而,如果酒店 id 1 对于商家 1 的含义与对于商家 2 的含义不同,那么您应该坚持使用第一个
URL
(基本上是唯一的复合键)。

© www.soinside.com 2019 - 2024. All rights reserved.