117、修复自定义Normalizer时IRI信息丢失的问题1
Symfony 中的 Normalizer 和 Serializer 组件 在 Symfony 框架中,Normalizer 和 Serializer 组件扮演着非常重要的角色,特别是在 API 开发中。Normalizer 负责将对象 normalize 成标准化的格式,而 Serializer 负责将对象 serialize 成指定的格式,例如 JSON、XML 等。 在本文中,我们将讨论如何修复自定义 Normalizer 时 IRI 信息丢失的问题。我们需要了解 Normalizer 和 Serializer 的基本概念。 Normalizer 是一个接口,负责将对象 normalize 成标准化的格式。 Symfony 框架提供了多种 Normalizer 实现,例如 ObjectNormalizer、ItemNormalizer 等。ObjectNormalizer 是一个基本的 Normalizer 实现,负责将对象 normalize 成标准化的格式。ItemNormalizer 则是 Api Platform 框架提供的 Normalizer 实现,负责将对象 normalize 成标准化的格式,并且支持 IRI 信息的设置。 Serializer 则是一个组件,负责将对象 serialize 成指定的格式。 Symfony 框架提供了多种 Serializer 实现,例如 JsonEncoder、XmlEncoder 等。Serializer 组件会根据 Normalizer 的输出结果,将对象 serialize 成指定的格式。 现在,让我们回到问题的核心。我们创建了一个自定义的 Normalizer,即 PostNormalizer,並在获取文章数据时添加了文章的封面图像链接,然后在创建文章资源时自动的为文章设置文章作者。然而,当我们使用第三个接口来获取 id 为 20 的文章时,点击 Execute,发现获取到的文章数据缺少了 @context、@id 和 @type 这三项,也就是数据的 IRI 信息不见了。 问题的根源在于,我们使用的 Normalizer 不是 Api Platform 提供的 Normalizer,而是 Symfony 的 ObjectNormalizer。ObjectNormalizer 不支持 IRI 信息的设置,因此我们需要使用 Api Platform 提供的 Normalizer。 我们可以使用 Api Platform 提供的 ItemNormalizer,它支持 IRI 信息的设置。我们可以在控制台中查看容器中所有的 Normalizer,输入 symfony console debug:container,关键字输入 normalizer。我们可以看到有多种 Normalizer 实现,其中包括 ItemNormalizer。 我们可以让自定义的 Normalizer 实现 NormalizerAwareInterface 接口,这样就可以使用 Api Platform 提供的 Normalizer 对象。然后,我们可以在自定义的 Normalizer 中使用 Serializer 对象执 normalize() 方法,这样就可以将数据 normalize 成标准化的格式,并且支持 IRI 信息的设置。 解决自定义 Normalizer 时 IRI 信息丢失的问题可以通过使用 Api Platform 提供的 Normalizer 实现和 Serializer 组件来实现。我们需要了解 Normalizer 和 Serializer 的基本概念,并且了解 Api Platform 提供的 Normalizer 实现和 Serializer 组件的使用方法。
- 粉丝: 30
- 资源: 319
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 料带自动上料机含bom和3D图纸和工程图机械结构设计图纸和其它技术资料和技术方案非常好100%好用.zip
- 使用Java多线程和同步机制实现生产者-消费者模式.zip
- 端子排自动切割设备含bom工程图机械结构设计图纸和其它技术资料和技术方案非常好100%好用.zip
- Python爬虫入门实例:利用requests和BeautifulSoup抓取网页标题
- HBase常用的Shell命令
- Linux下Oracle 11g的完整安装与配置指南
- MySQL多平台安装教程:Windows、macOS与Linux
- 新年快乐,喜庆html
- 单片机综合实验储物箱重庆邮电大学
- Screenshot_20241224_205242_com.tencent.tmgp.sgame.jpg
- html css网页制作成品.docx
- Selenium-ECShop项目文档
- 实验报告,重庆邮电大学,单片机,大作业
- 汽车防撞梁总成装配台3D图纸和工程图机械结构设计图纸和其它技术资料和技术方案非常好100%好用.zip
- Java平台Maven项目管理和构建工具的安装与配置
- 重庆邮电大学所有实验单片机,大作业,串口,双机编程,程序文件
评论0