我正在使用Java开发一个webapp的后端层,它本质上是一个RESTful API(使用Sping Boot )。在我的后端中,我调用另一个API(本质上是我的数据库)来检索和合并数据。目前我处理GET请求的工作流程如下所示
1.在我的API中接收请求
1.调用其他API(数据库),并将其JSON响应Map到DTO
1.将DTO转换为BO以对其执行逻辑
1.通过spring Boot 返回BO(将其字段转换为JSON主体并返回this)
"我的问题是"
遵循DTO/BO模式,是否“要求”我将BO转换为第二个DTO,包含要传输的数据?
从本质上讲,这将添加一个步骤到我上面的列表中,在3和4之间:
---〉...
---〉3.5.将BO转换为新的DTO
---〉4.通过sprint Boot 返回DTO
我没有这样做的原因是因为两次转换对象似乎有点密集,但是DTO/BO模式可以给予我控制应该返回哪些确切的字段。
1条答案
按热度按时间lb3vh1jj1#
spring返回的JSON体本身就是一个DTO。如果你对这个表示不满意,那么是的,你应该控制并创建自己的DTO,以便从应用程序中传输出去。
这很可能是为了信息隐藏的目的。如果有外部应用程序不知道的字段(内部id等),那么你就需要创建一个隐藏这些内容的对象。
如果您的BO恰好与您想要共享的内容一致,那么添加另一层Map不会改变任何东西,不会比spring已经为您完成的事情增加任何价值。