在控制器或服务层反序列化?

Eri*_*ron 3 design-patterns symfony

我正在使用 Symfony2 开发 REST API,它接收 JSON 格式的数据。

将 JSON 转换为对象的正确位置在哪里:

  • 控制器将 JSON 与对象相互转换,并调用传递 PHP 对象的 Service 方法,该方法也返回一个对象?
  • 控制器将 JSON 传递给 Service 方法,并将 JSON 转换为对象,并在返回之前将结果对象转换为 JSON?

Eln*_*mov 5

它绝对不属于服务层,因为它应该在模型对象方面工作。您可以在应用程序中拥有许多不同的 UI \xe2\x80\x94 HTML、REST、命令行 \xe2\x80\x94,并且所有这些都将使用不同的格式进行数据交换。让服务层负责处理所有这些格式是没有意义的。

\n\n

每种类型的 UI 都有自己的控制器层 \xe2\x80\x94 或命令行 UI \xe2\x80\x94 情况下的命令,这些控制器负责在传递数据之前将数据与模型对象进行转换到服务层并返回。

\n\n

您可以选择直接在控制器操作中直接执行 \xe2\x80\x94,或委托给其他服务,或使用 AOP \xe2\x80\x94。只要将其保留在服务层 \xe2\x80\x94 域层之外即可。

\n