我正在使用 Symfony2 开发一个 REST API,它接收 JSON 格式的数据。
将 JSON 转换为对象的正确位置在哪里:
- 控制器将 JSON 转换为/从对象转换并调用 Service 方法传递一个 PHP 对象,该对象也返回一个对象?
- 控制器将 JSON 传递给 Service 方法,它将 JSON 转换为对象,然后在返回之前将结果对象转换为 JSON?
我正在使用 Symfony2 开发一个 REST API,它接收 JSON 格式的数据。
将 JSON 转换为对象的正确位置在哪里:
它绝对不属于服务层,因为它应该根据模型对象工作。您可以在一个应用程序中拥有许多不同的 UI——HTML、REST、命令行——并且它们都将使用不同的格式进行数据交换。让服务层负责处理所有这些格式是没有意义的。
每种类型的 UI 都有自己的控制器层——或者命令行 UI 中的命令——并且这些控制器负责在模型对象与模型对象之间来回转换数据,然后再将它们传递给服务层并返回。
你如何做到这一点——直接在控制器操作中,或者委托给其他服务,或者使用 AOP——是你的选择。只需将其排除在服务层之外——也就是领域层。
将 JSON 转换为对象的最佳位置是ParamConverter / listener。
请查看FOSRestBundle,尤其是这个引入请求体转换器的拉取请求。
更多信息可以在Matthias Noback 的这篇优秀文章中找到。