RESTful api用于嵌套资源

时间:2017-07-13 04:42:04

标签: rest api web web-applications restful-url

我有两个实体HotelMerchant,每个商家都可以拥有多家酒店。现在我有一个像这样的api端点:

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

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

/api/v1/hotels/{id}

后者也很短。

2 个答案:

答案 0 :(得分:2)

根据我的经验,后者是优选的,因为它可以在以后为您提供更大的灵活性。在六个月内,有人会说“嘿,我希望能够查找Agraba的所有酒店”。第一个URL方案令人痛苦 - 您需要添加新端点。第二个URL方案支持查询参数:GET /hotels?location=Agraba

您可能希望将/merchants/{id}/hotels保留为收集端点,以便您可以POST / DELETE来添加/删除特定商家的酒店。

答案 1 :(得分:0)

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

因此,如果酒店的id是全球唯一的,那么确定,使用较短的链接没有问题。但是,如果酒店ID 1对于商家1而言意味着与商家2不同,那么您应该坚持使用第一个URL(基本上是唯一的复合键)。