API平台中的汇总子资源

时间:2019-06-20 14:46:54

标签: php rest symfony api-platform.com

我正在Symfony之上使用API​​平台构建REST API。我有以下实体:PlaceRoomBooking。 API平台在后台做了很多出色的工作,并为Place的子资源(例如places/{id}/rooms)生成了路由,其中​​房间是Room资源的集合。

我正在尝试找出最好的/最RESTful的方式来计算Place的子级集合。具体来说,我想为places/{id}/availability/{fromDate}/{toDate}路线。 Availability是一个取决于Booking实体聚合的计算属性,因此需要针对每个请求进行计算,并且不会在任何地方持久化。

我觉得我的选择是:

  1. 创建自定义操作/控制器,并将其映射到itemOperation实体上的Place
  2. 创建一个AvailabilityDate资源,并在我的availability资源上放置一个Place属性,该属性不包含在ORM和规范化/非规范化中,并定义场所服务的筛选服务。

选项1在许多方面似乎更简单,因为我可以轻松地从控制器返回任意数据结构,但是我需要在控制器中接收附加参数(fromDate和toDate),这似乎只能通过swagger_context来实现。配置(我也需要为文档定义)

选项2似乎更RESTful,因为它正在处理实际资源而不是任意数据结构。文档可以由API平台生成,但我并不是真的想将availability公开为Place的属性,因为它是从其他资源中得出的,并且理想情况下还需要是一个关联数组,其中关键是日期,以及其他一些注意事项

0 个答案:

没有答案