1

我们使用 Symfony 4 + Doctrine + APIPlateform 来提供 HTTP API。

APIPlateform 将 Doctrine 实体公开为 API Rest 资源(通过实体类中的注释),(我发现)这不是一个好的做法,因为业务模型(由 API 公开)应该与 Symfony Doctrine 模型相同。

因此,它看起来更像是一个基本的 CRUD,而不是一个真正的应用程序。

我错了还是可以创建一种 Doctrine 虚拟实体以使用 APIPlatform(甚至 Symfony 表单)之类的工具?

4

1 回答 1

0

确实,API 平台似乎对非常简单的 CRUD 案例有强烈的看法。

然而,Symfony Form 组件将接受任何对象作为数据。我们通常使用像 MyThingType(从 AbstractType 扩展)和 MyThingDTO(数据传输对象)这样的对象来将 UI 与业务模型和持久层分开。工作得很好。

API 平台对 DTO 有某种支持,但在我看来,它对于复杂的场景并不那么有用。对于具有良好关注点分离和复杂业务模型的复杂应用程序,似乎直接使用 Symfony 控制器/表单或者可能与 FOS Rest 一起使用会更直接地实现它。 https://api-platform.com/docs/core/dto/

您可以通过序列化组隐藏 Doctrine 实体的一些内部结构,但它仍然与真正的分离不同。

于 2018-03-22T06:09:42.423 回答