我正在研究Symfony 5 + API平台项目。我仍然在使用API过滤器。在通过某些控制器设置伪造的API路由之前,我已经完成了这项工作。但是,由于有一个现成的API平台功能可以实现这一点,所以我想“使”这项工作生效。
首先,实体过滤器将被忽略,API平台对此已意识到。根据 Symfony Profiler > API平台> 资源元数据:
并根据同一页面中的数据提供者标签:
到目前为止,我尝试将@ApiFilter()
注释添加到API documentation之类的Question
实体中来解释:
// ...
use Symfony\Component\Serializer\Annotation\Groups;
/**
* @ORM\Entity(repositoryClass=QuestionRepository::class)
* @ApiResource(normalizationContext={"groups"={"question"}})
* @ApiFilter(SearchFilter::class, properties={"status": "partial"})
*/
class Question
{
// ...
/**
* @ORM\Column(type="string", length=255)
* @Groups("question")
*/
private $status;
// ...
}
我还尝试在要过滤的所需属性上指定过滤器。 (感谢上一个问题的 @EugeneRuban )。
那么,为什么API平台会忽略过滤器?