关于 api-platform-state-providers
面向 Symfony 的 API Platform 状态提供器与处理器实现技能,涵盖替代数据源、委托给 Doctrine、持久化钩子及按操作配置。
主要功能
- 01自定义状态提供器
- 02自定义状态处理器
- 03委托给 Doctrine 提供器和处理器
- 04按操作配置提供器与处理器
- 05安排持久化逻辑和副作用顺序
适用场景
- 01从非 Doctrine 数据源读取数据
- 02为 Doctrine 结果应用租户范围
- 03在持久化前后执行业务逻辑
- 04在 v4 读取端点中分派查询或命令
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ dev-toolings/ superpowers-symfony --skill api-platform-state-providers安装后在 Claude Code 中输入/api-platform-state-providers确认已加载。
附带文件reference.md
详细介绍
Api Platform 状态提供器(Symfony)
适用场景
- 从默认 Doctrine 提供器以外的来源读取数据。
- 封装 Doctrine 提供器以对结果进行后处理(返回 DTO、强制执行租户范围)。
- 业务逻辑必须在持久化之前或之后运行(哈希处理、生成 slug、分发消息)。
- v4 读取端点必须通过处理器分发查询或命令。
默认工作流
- 实现
ProviderInterface::provide(),返回iterable|object|null,其中null会返回 404(v3.4 声明为mixed)。 - 如需继续使用 Doctrine 获取数据,通过
#[Autowire]注入api_platform.doctrine.orm.state.item_provider和api_platform.doctrine.orm.state.collection_provider。 - 实现
ProcessorInterface::process(),并委托给api_platform.doctrine.orm.state.persist_processor或remove_processor。 - 在资源或操作上通过
provider:和processor:配置它们;自动配置会注册它们,只有在未启用自动配置时才需要api_platform.state_provider或api_platform.state_processor标签。 - 对
GET或GetCollection上的处理器,添加write: true(仅限 v4)。
注意事项
- 在调用内部处理器之前运行持久化前逻辑,并在其返回后执行副作用。
- 处理器返回已创建或已修改的对象;对于
DELETE不返回任何内容。 - 在安全方法上使用
write: true仅限 v4:v3.4 的处理器只会在写入方法上运行。 DataProvider和DataPersister是 v2 接口,现已不存在。
渐进式展开
- 使用此文件了解执行方式和风险控制。
- 需要深入了解实现细节时,打开参考资料。
输出约定
- 添加了哪些提供器和处理器,以及它们绑定到哪些操作。
- 装饰了哪些内置服务。
- 针对未找到、成功和副作用路径的测试。
参考资料
reference.md
评论
支持 Markdown