我正在使用 Symfony2 和 FosRestBundle 为我们的系统开发 REST API。
FosRestBundle 是一个非常好的工具,但它似乎有一个限制:只有属性(私有、受保护和公共)可以暴露给 API。
我想公开一个基于其他两个字段(例如全名=firstName+lastName)计算的派生属性以及描述关系的属性(例如产品的类别名称而不是产品的类别ID)
然而@Expose注解只能作用于属性。
我尝试创建一个虚拟属性,在构造函数中设置该属性(在创建新属性时有效)并在 Doctrine 生命周期 postLoad 事件处理程序中设置该属性(在从数据库加载时有效)并且它正在工作。但我不喜欢这种方法,因为即使 API 不使用实体类,它也会产生开销和额外的编码。
我想知道是否有更好的方法来实现这一目标。
您可以使用虚拟属性将函数返回的值作为虚拟属性返回,您可以在以下位置找到更多信息http://jmsyst.com/libs/serializer/master/reference/annotations#virtualproperty http://jmsyst.com/libs/serializer/master/reference/annotations#virtualproperty
/**
*
* @VirtualProperty()
* @SerializedName("fullName")
*/
public function getName()
{
// return name;
}
因此,当 this 对象被序列化时,它将返回一个具有 fullName 属性的对象,该属性是 getName 函数返回的值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)