我应该向 DDD 架构中的 DTO 添加验证吗?
Should I add validation to DTOs in a DDD architecture?
我通常使用 DTOs
将请求从 Presentation
发送到 Application
,我使用 DTOs
将响应从 Application
发送回 Presentation
.
我通常用 Required
、StringLength
等属性修饰我的请求 DTOs
的属性。但是没有业务规则。
但是,我在多个来源中了解到我不应该向 DTOs
添加任何类型的验证(例如 Required
、StringLength
等属性)完全没有。
请问根据DDD文献推荐的方式是什么。谢谢。
DDD 中负责输入验证的概念是应用程序服务。
因此您应该删除属性并验证应用服务中的 DTO。 使用DTO仅定义结构,并在应用服务中执行输入验证。
如果您在不同的应用服务中获得大量重复代码(例如,因为它们使用相同的 DTO 并需要相同的验证),您当然可以将验证提取到可重用的服务中。不过,应用服务 控制 输入验证。
我通常使用 DTOs
将请求从 Presentation
发送到 Application
,我使用 DTOs
将响应从 Application
发送回 Presentation
.
我通常用 Required
、StringLength
等属性修饰我的请求 DTOs
的属性。但是没有业务规则。
但是,我在多个来源中了解到我不应该向 DTOs
添加任何类型的验证(例如 Required
、StringLength
等属性)完全没有。
请问根据DDD文献推荐的方式是什么。谢谢。
DDD 中负责输入验证的概念是应用程序服务。
因此您应该删除属性并验证应用服务中的 DTO。 使用DTO仅定义结构,并在应用服务中执行输入验证。
如果您在不同的应用服务中获得大量重复代码(例如,因为它们使用相同的 DTO 并需要相同的验证),您当然可以将验证提取到可重用的服务中。不过,应用服务 控制 输入验证。