我正在开发Web服务的RESTful API。我需要公开一些不属于实体本身的属性。将定制属性添加到序列化对象
例如我有一个Pizza
实体对象,它具有它自己的size
和name
属性。我与FOSRestBundle和JMSSerializer输出它以JSON格式。我已经为此实体设置了属性注释,以通过序列化组来显示所需的属性,并且它工作得很好。
但我要补充一点,不属于实体本身的一些属性。例如,我希望我的pizza
拥有由某个PizzaService::isFresh(Pizza $pizza)
服务确定的属性:isFresh
。我该怎么做呢?
- 我是否应该为序列化过程注入一些额外的逻辑(如果是的话)?
- 我应该创建,我想从原来的实体以及附加外部属性公开性质的包装实体?
- 我应该添加属性
isFresh
到原来Pizza
实体和系列化之前控制器填充吗? - 我是否应该返回独立于实体数据的附加数据(例如,在兄弟JSON属性中)?
换句话说:什么是解决这个问题的最佳做法是什么?你能提供一些例子吗?谢谢。
这个问题也是关于这个虚拟财产依赖于服务,似乎这只是答案的一部分。也许你可以设想一个方法来实现呢? – kix
是的,你有权利。我认为“我应该将属性isFresh添加到原始Pizza实体并在序列化之前在控制器中填充?”是更好的解决方案。为此,我使用Accessor注释添加另一种方式 – griotteau
嘿,谢谢你的回答。你为什么认为这种方法更好?其他方法的缺点是什么?你在实践中实现了这个设计吗? –