假设我的应用程序中有不同的模型:场地,访客,预订,购买,表格。嵌套这些关系的“正确”方法是什么?比如...
......等等。
我应该(使用标准的RESTful CRUD)......
/api/venues/{venue_id}/reservations
/api/venues/{venue_id}/reservations/{reservation_id}/purchases
/api/venues/{venue_id}/reservations/{reservation_id}/guests
/api/venues/{venue_id}/tables
或者预订,购买和客人都应该在一个单独的资源中吗?如,
/api/reservations
/api/tables
并接受guest_id,item_id(购买),table_id(表格)等参数......
如果我想查看关系中的单个资源,我该怎么办?
我意识到这没有“硬规则”,但从长远来看,最佳做法是什么?为什么呢?
答案 0 :(得分:1)
我认为应该只有一种方法可以从API获取数据。 所以你选择了一种方法。
我们考虑guests
:
如果你要去
/api/venues/{venue_id}/reservations/{reservation_id}/guests
每次我们需要预订的客人,venue_id
都是
需要。更重要的是,当我们需要获得特定的客人时
/api/venues/{venue_id}/reservations/{reservation_id}/guests/{guest_id}
venue_id
和reservation_id
都是必需的。
这是非常必要的吗?好吧,为了授权可能吧 是。但是
/api/guests/{guest_id}
更“安全”和灵活的方法,可以要求或不要求
在特定情况下venue_id
或reservation_id
。