关于 api-platform-serialization
面向 Symfony 的 API Platform 序列化技能,指导按操作配置字段组、关联资源呈现和计算字段,并涵盖深度限制与隐藏敏感字段等防护措施。
主要功能
- 01按操作配置序列化字段组
- 02控制关联资源以 IRI 或嵌入形式呈现
- 03添加计算字段和角色相关字段
- 04配置属性级规范化选项
- 05防止循环并隐藏敏感字段
适用场景
- 01为列表和读取操作暴露不同字段
- 02控制关联资源是否嵌入
- 03无需自定义规范化器即可设置日期格式
- 04在保持实体整洁的同时添加计算字段
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ dev-toolings/ superpowers-symfony --skill api-platform-serialization安装后在 Claude Code 中输入/api-platform-serialization确认已加载。
附带文件reference.md
详细介绍
Api Platform 序列化(Symfony)
适用场景
- 不同操作(列表、读取、创建、更新)需要公开不同字段。
- 关联资源需要以 IRI 形式呈现或嵌入。
- 响应需要计算得出或依赖角色的字段。
- 属性需要使用日期格式等正规化器选项。
默认工作流
- 将分组命名为
entity:operation,并为每个操作设置normalizationContext和denormalizationContext。 - 使用 Serializer
Attribute命名空间中的#[Groups]标记属性,而不是旧的Annotation命名空间。 - 使用
#[ApiProperty(readableLink: false, writableLink: false)]控制关联,强制使用 IRI。 - 使用
#[Context]设置每个属性的选项,而不是编写正规化器。 - 在自定义正规化器中添加计算字段,并在
api_platform.serializer.context_builder的装饰器中添加动态分组。 - 使用
#[MaxDepth]和enable_max_depth防止循环引用,并使用#[Ignore]隐藏机密信息。
防护措施
- 使用独立的读写分组:例如,
password仅属于创建分组,id仅属于读取分组。 - 只有当关联资源与父资源共享一个分组时,才会嵌入该资源;否则会以 IRI 形式呈现。
- 除非上下文中的
enable_max_depth为true,否则#[MaxDepth]不会生效。 - 保持实体简洁:计算字段应放在正规化器中。
渐进式披露
- 使用此文件了解执行方式和风险控制。
- 需要深入了解实现细节时,打开参考资料。
输出约定
- 以字段矩阵形式列出每个操作的分组和上下文。
- 列出新增的正规化器或上下文构建器,以及它们的注册方式。
- 提供展示最终字段的测试或 OpenAPI 输出。
参考资料
reference.md
评论
支持 Markdown