Sylius 资源包 API 调用响应的过滤输出
Filter output of a SyliusResourceBundle API call reponse
我将 SyliusResourceBundle 用作独立包,用于通过 API.
公开数据
当我请求与其他一些实体有关系的实体时,我总是会得到包含所有相关实体属性的完整响应。这会导致大量 JSON 响应,以及在客户端下载太多数据。
通常,如果我的实体有这样的 $user 属性:
/**
* @var User
*
* @ORM\ManyToOne(targetEntity="User", inversedBy="object")
*/
private $user;
当我请求对象时,我在 API 响应中得到了用户的所有信息:姓名、电子邮件等。
有没有办法只获取我需要的 properties/entities 列表?比如注释之类的?
谢谢
郑重声明,SyliusResourceBundle 使用 JMSSeriliazerBundle,因此这只是资源实体中的排除策略问题。
我只需要排除实体级别的所有字段,并且只公开我需要的字段,如下所示:
namespace AppBundle\Entity;
use JMS\Serializer\Annotation as JMS;
use Sylius\Component\Resource\Model\ResourceInterface;
use Doctrine\ORM\Mapping as ORM;
/**
*
* @JMS\ExclusionPolicy("all")
*/
class MyResource implements ResourceInterface
{
/**
* @ORM\ManyToOne(targetEntity="User", inversedBy="object")
*/
private $user;
/**
* @ORM\Column(type="string")
* @JMS\Expose()
*/
private $name;
}
参见文档 here。
我将 SyliusResourceBundle 用作独立包,用于通过 API.
公开数据当我请求与其他一些实体有关系的实体时,我总是会得到包含所有相关实体属性的完整响应。这会导致大量 JSON 响应,以及在客户端下载太多数据。
通常,如果我的实体有这样的 $user 属性:
/**
* @var User
*
* @ORM\ManyToOne(targetEntity="User", inversedBy="object")
*/
private $user;
当我请求对象时,我在 API 响应中得到了用户的所有信息:姓名、电子邮件等。
有没有办法只获取我需要的 properties/entities 列表?比如注释之类的?
谢谢
郑重声明,SyliusResourceBundle 使用 JMSSeriliazerBundle,因此这只是资源实体中的排除策略问题。
我只需要排除实体级别的所有字段,并且只公开我需要的字段,如下所示:
namespace AppBundle\Entity;
use JMS\Serializer\Annotation as JMS;
use Sylius\Component\Resource\Model\ResourceInterface;
use Doctrine\ORM\Mapping as ORM;
/**
*
* @JMS\ExclusionPolicy("all")
*/
class MyResource implements ResourceInterface
{
/**
* @ORM\ManyToOne(targetEntity="User", inversedBy="object")
*/
private $user;
/**
* @ORM\Column(type="string")
* @JMS\Expose()
*/
private $name;
}
参见文档 here。