【发布时间】:2014-04-08 02:00:07
【问题描述】:
我正在为 Web 服务开发 RESTful API。而且我需要暴露一些不属于实体本身的属性。
例如我有一个Pizza 实体对象,它有自己的size 和name 属性。我使用 FOSRestBundle 和 JMSSerializer 以 JSON 格式输出它。我已经为此实体设置了属性注释,以通过序列化组公开所需的属性,并且效果很好。
但是我需要添加一些不属于实体本身的属性。例如,我希望我的pizza 具有属性:isFresh,该属性由某些PizzaService::isFresh(Pizza $pizza) 服务确定。我该怎么做?
- 我应该在序列化过程中注入一些额外的逻辑吗(如果是的话如何)?
- 我是否应该创建一个包装实体,其中包含我想从原始实体公开的属性以及其他 external 属性?
- 是否应该将属性
isFresh添加到原始Pizza实体并在序列化之前填充到控制器中? - 是否应该返回独立于实体数据的附加数据(例如在同级 JSON 属性中)?
换句话说:围绕这个问题的最佳做法是什么?你能提供例子吗?谢谢。
【问题讨论】:
标签: rest symfony fosrestbundle jmsserializerbundle jms-serializer