【问题标题】:Filter output of a SyliusResourceBundle API call reponse过滤 Sylius 资源包 API 调用响应的输出
【发布时间】:2018-04-17 13:38:05
【问题描述】:

我使用 SyliusResourceBundle 作为一个独立的包来通过 API 公开数据。

当我请求与其他一些实体有关系的实体时,我总是会得到包含所有相关实体属性的完整响应。这会导致大量 JSON 响应,以及在客户端下载太多数据。

通常,如果我的实体有这样的 $user 属性:

/**
 * @var User
 *
 * @ORM\ManyToOne(targetEntity="User", inversedBy="object")
 */
private $user;

当我请求对象时,我在 API 响应中获得了所有用户的资料:姓名、电子邮件等。

有没有办法只获取我需要的属性/实体列表?像注释什么的?

谢谢

【问题讨论】:

    标签: symfony sylius jmsserializerbundle


    【解决方案1】:

    作为记录,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

    【讨论】:

      猜你喜欢
      • 2020-09-19
      • 2017-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 2019-10-20
      • 1970-01-01
      相关资源
      最近更新 更多