我有两个实体Hotel
,Merchant
,每个商家都可以拥有多家酒店。现在我有一个像这样的api端点:
/api/v1/merchants/{id}/hotels/{id}
但我在想这个语义有什么问题:
/api/v1/hotels/{id}
后者也很短。
答案 0 :(得分:2)
根据我的经验,后者是优选的,因为它可以在以后为您提供更大的灵活性。在六个月内,有人会说“嘿,我希望能够查找Agraba的所有酒店”。第一个URL方案令人痛苦 - 您需要添加新端点。第二个URL方案支持查询参数:GET /hotels?location=Agraba
。
您可能希望将/merchants/{id}/hotels
保留为收集端点,以便您可以POST / DELETE来添加/删除特定商家的酒店。
答案 1 :(得分:0)
在REST
中,每个URL
应唯一标识单个资源。
因此,如果酒店的id
是全球唯一的,那么确定,使用较短的链接没有问题。但是,如果酒店ID 1对于商家1而言意味着与商家2不同,那么您应该坚持使用第一个URL
(基本上是唯一的复合键)。