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