我正在Symfony之上使用API平台构建REST API。我有以下实体:Place
,Room
,Booking
。 API平台在后台做了很多出色的工作,并为Place
的子资源(例如places/{id}/rooms
)生成了路由,其中房间是Room
资源的集合。
我正在尝试找出最好的/最RESTful的方式来计算Place
的子级集合。具体来说,我想为places/{id}/availability/{fromDate}/{toDate}
路线。 Availability
是一个取决于Booking
实体聚合的计算属性,因此需要针对每个请求进行计算,并且不会在任何地方持久化。
我觉得我的选择是:
itemOperation
实体上的Place
。AvailabilityDate
资源,并在我的availability
资源上放置一个Place
属性,该属性不包含在ORM和规范化/非规范化中,并定义场所服务的筛选服务。选项1在许多方面似乎更简单,因为我可以轻松地从控制器返回任意数据结构,但是我需要在控制器中接收附加参数(fromDate和toDate),这似乎只能通过swagger_context
来实现。配置(我也需要为文档定义)
选项2似乎更RESTful,因为它正在处理实际资源而不是任意数据结构。文档可以由API平台生成,但我并不是真的想将availability
公开为Place
的属性,因为它是从其他资源中得出的,并且理想情况下还需要是一个关联数组,其中关键是日期,以及其他一些注意事项