Http控制器参数对象定义为DTO还是其他?

问题描述 投票:0回答:2

在Internet传输层中使用RPC,使用dto是合理的。 Http控制器?如果前端使用所有控制器,参数定义为VO?

java domain-driven-design
2个回答
1
投票

我想你在问其他控制器方法的参数是否可以是DTO。

那么它将取决于您使用的框架。 http参数是字符串。

如果框架有一个实用程序机制(可能是一个注释),它允许你将你收到的http参数映射到你提供的作为其余控制器方法arg的DTO,那么作为DTO的arg就没有问题。

如果框架没有这样的实用程序(它只是将每个http参数映射到其余控制器方法的字符串arg),那么你必须在其余的控制器方法中手动构建DTO。

我不知道Spring是否有类似于@PathVariable的实用程序注释,而是将多个请求参数收集到DTO对象中。

更新:

Spring @RequestBody注释将JSON反序列化为其余控制器方法的java对象参数。因此,使用@RequestBody注释的arg是DTO。

DDD没有说明哪种类型必须是休息api的参数。它们既可以是DTO也可以是字符串,无关紧要。如果他们在哪里,你必须自己构建DTO。使用@RequestBody,Spring框架为您完成。


1
投票

在java中,进程之间的对象以camel case表示法命名,并具有DTO后缀。例如ServiceMessageDTO

DTO代表数据传输对象。

这也适用于来自其余webmethods的请求体参数。

© www.soinside.com 2019 - 2024. All rights reserved.