Apiplatform 忽略组上下文

问题描述 投票:0回答:1

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 版本,但没有结果。我尝试使用标准配置,但它也不起作用。

symfony api-platform.com symfony6
1个回答
0
投票

忽略上下文的不是 API 平台,而是您!通过实现自定义控制器/操作(不推荐),您可以绕过所有包含的侦听器。您自己明确调用

serialize
并且不向其传递任何上下文。

要利用所有 APIP 侦听器,包括序列化侦听器(尊重操作上下文),您应该删除自定义操作并实现事件订阅者。

如果您确实想坚持自定义操作,则需要自己完成所有工作(例如确定上下文组并将它们传递给序列化器)

© www.soinside.com 2019 - 2024. All rights reserved.