我正在为 Web 服务开发 RESTful API。而且我需要公开一些不属于实体本身的属性。
例如我有一个Pizza
实体对象,它有它自己的size
和name
属性。我使用FOSRestBundle和JMSSerializer以 JSON 格式输出它。我已经为此实体设置了属性注释,以通过序列化组公开所需的属性,并且效果很好。
但是我需要添加一些不属于实体本身的属性。例如,我希望我pizza
拥有财产:isFresh
这是由某些PizzaService::isFresh(Pizza $pizza)
服务决定的。我该怎么做呢?
- 我应该在序列化过程中注入一些额外的逻辑吗(如果是这样的话)?
- 我是否应该使用要从原始实体公开的属性以及其他外部属性创建包装实体?
- 我应该在序列化之前将属性添加
isFresh
到原始Pizza
实体并填充到控制器中吗? - 我是否应该返回独立于实体数据的附加数据(例如在同级 JSON 属性中)?
换句话说:围绕这个问题的最佳实践是什么?你能提供例子吗?谢谢你。