apiplatform 序列化程序完全忽略“groups”属性。 代码如下:
控制器:
$response = $this->serializer->deserialize($params, User::class, 'json');
return $this->json($response);
实体:
#[ApiResource(
normalizationContext: ['groups' => ['res']],
denormalizationContext: ['groups' => ['req']],
)]
class User
{
#[Groups("req")]
private string $name = '';
#[Groups("res")]
private string $token = '';
}
退货:
{
"name": "abc",
"token": "def1",
}
我将 symfony 更新到 6.4 版本(甚至 7.0),将 apiplatform 更新到 3.2 版本,但没有结果。我尝试使用标准配置,但它也不起作用。
忽略上下文的不是 API 平台,而是您!通过实现自定义控制器/操作(不推荐),您可以绕过所有包含的侦听器。您自己明确调用
serialize
并且不向其传递任何上下文。
要利用所有 APIP 侦听器,包括序列化侦听器(尊重操作上下文),您应该删除自定义操作并实现事件订阅者。
如果您确实想坚持自定义操作,则需要自己完成所有工作(例如确定上下文组并将它们传递给序列化器)