【发布时间】:2017-11-29 16:42:06
【问题描述】:
我正在尝试在我的 symfony 项目中实现一些 api。目前该项目有许多带有标准 crud 的控制器,基于 html 表、表单/验证器等。
我正在寻找 api-platform 项目,该项目可以使标准 rest api 的构建变得非常容易,并且对于 GET 部分,它符合我的需要。 但是对于 POST/PUT/DELETE 部分,它在实体上缝合了一个非常基本的持久化操作,突然在我的项目中,我需要在实体持久化之后执行更多操作。
我已经把文档变红了,我真的很困惑如何做到这一点...... 我看到了两种可能性:
使用事件系统,为每个实体订阅 POST_WRITE
为实体的每个创建/更新/删除操作创建自定义操作
在这两种情况下,我都会在项目中拥有大量的单个操作或事件订阅者 (30/40),而且维护起来真的很不舒服。此外,我可能必须复制控制器中已有的相同代码,以维护旧的表单系统,直到全部以 API 格式重写。
关于如何解决这个问题的任何建议?
没有办法使用相同的控制器操作,例如在 FOSRestBundle 中,这样我就可以接收数据,执行各种验证/持久化/额外操作,然后返回由 api 管理的结果-平台活动?
有什么方法可以手动调用 api 平台的某些部分,如反序列化/序列化、标准控制器操作中的过滤器和分页?
谢谢大家 干杯 丹尼尔
【问题讨论】: