RESTful API关系,端点和方法的最佳实践

时间:2014-02-18 20:43:12

标签: ruby-on-rails api rest

假设我的应用程序中有不同的模型:场地,访客,预订,购买,表格。嵌套这些关系的“正确”方法是什么?比如...

  • 通过预订,一个场地有很多客人
  • 客人通过预订在场地购买了许多物品
  • 预订有很多客人
  • 场地有很多保留
  • 场地有很多桌子

......等等。

我应该(使用标准的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(表格)等参数......

如果我想查看关系中的单个资源,我该怎么办?

我意识到这没有“硬规则”,但从长远来看,最佳做法是什么?为什么呢?

1 个答案:

答案 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_idreservation_id都是必需的。

这是非常必要的吗?好吧,为了授权可能吧 是。但是

/api/guests/{guest_id}

更“安全”和灵活的方法,可以要求或不要求 在特定情况下venue_idreservation_id