Api 平台防止 IRI @ID 为空时序列化

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

简短的问题:我希望能够序列化一个还没有 ID 的

ApiResource

我最近从 v2.6 升级到 api-platform v3.2。曾经有用的“功能”之一是我可以序列化没有 ID 的资源。这对我来说非常有用,因为我经常序列化一个未持久化的实体,该实体在发送到客户端之前会输出到 HTML 表单。然后客户端根据需要对其进行操作。但在 v3.0 中我只是得到一个例外:

无法为该项目生成 IRI

在 v2.6 中,它会像这样序列化:

{
  "@context": "/my/api/contexts/ResourceName",
  "@id": "/my/api/resource/", // notice lack of actual ID value
  ...
}

我有一个自定义的

Normalizer
可以为我的应用程序执行某些操作,并且在其中我可以破解一些东西来制作它,这样就不会为具有 null ID 的资源生成
@id
,但这感觉不对.

// do not create IRI if the object has no ID; not sure of a better way to do this with api-platform v3.0+
if (method_exists($object, 'getId') && $object->getId() === null) {
   $context['force_iri_generation'] = false; // undocumented var used for other purposes.
   $context['iri'] = true; //str_replace('\\', '/', get_class($object)) . '/0'; // could be anything
}
api-platform.com
1个回答
0
投票

您只需添加此属性即可避免生成 IRI

#[ApiProperty(genId: false)]
© www.soinside.com 2019 - 2024. All rights reserved.