mcpField
A
api-platform-state-providers

api-platform-state-providers

github.com/dev-toolings开发22779 次安装3 周前更新
代码仓库

关于 api-platform-state-providers

面向 Symfony 的 API Platform 状态提供器与处理器实现技能,涵盖替代数据源、委托给 Doctrine、持久化钩子及按操作配置。

主要功能

  1. 01自定义状态提供器
  2. 02自定义状态处理器
  3. 03委托给 Doctrine 提供器和处理器
  4. 04按操作配置提供器与处理器
  5. 05安排持久化逻辑和副作用顺序

适用场景

  1. 01从非 Doctrine 数据源读取数据
  2. 02为 Doctrine 结果应用租户范围
  3. 03在持久化前后执行业务逻辑
  4. 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 读取端点必须通过处理器分发查询或命令。

默认工作流

  1. 实现 ProviderInterface::provide(),返回 iterable|object|null,其中 null 会返回 404(v3.4 声明为 mixed)。
  2. 如需继续使用 Doctrine 获取数据,通过 #[Autowire] 注入 api_platform.doctrine.orm.state.item_provider 和 api_platform.doctrine.orm.state.collection_provider。
  3. 实现 ProcessorInterface::process(),并委托给 api_platform.doctrine.orm.state.persist_processor 或 remove_processor。
  4. 在资源或操作上通过 provider: 和 processor: 配置它们;自动配置会注册它们,只有在未启用自动配置时才需要 api_platform.state_provider 或 api_platform.state_processor 标签。
  5. 对 GET 或 GetCollection 上的处理器,添加 write: true(仅限 v4)。

注意事项

  • 在调用内部处理器之前运行持久化前逻辑,并在其返回后执行副作用。
  • 处理器返回已创建或已修改的对象;对于 DELETE 不返回任何内容。
  • 在安全方法上使用 write: true 仅限 v4:v3.4 的处理器只会在写入方法上运行。
  • DataProvider 和 DataPersister 是 v2 接口,现已不存在。

渐进式展开

  • 使用此文件了解执行方式和风险控制。
  • 需要深入了解实现细节时,打开参考资料。

输出约定

  • 添加了哪些提供器和处理器,以及它们绑定到哪些操作。
  • 装饰了哪些内置服务。
  • 针对未找到、成功和副作用路径的测试。

参考资料

  • reference.md

评论

支持 Markdown