C# DDD:如何从应用程序服务返回验证错误?
我正试图按照DDD的一些原则,在.NETCore中为特定需求构建一个小框架,我想知道从应用层到api层返回验证错误的标准模式是什么 我有两种方法:C# DDD:如何从应用程序服务返回验证错误?,c#,.net,error-handling,domain-driven-design,C#,.net,Error Handling,Domain Driven Design,我正试图按照DDD的一些原则,在.NETCore中为特定需求构建一个小框架,我想知道从应用层到api层返回验证错误的标准模式是什么 我有两种方法: 强制所有应用程序服务方法返回固定结构(例如响应),并在此响应类中添加名为ValidationErrors的属性,并从应用程序层填充该属性 从应用层抛出业务验证异常(例如EntityNotFoundException),并从集中式中间件处理它们 就个人而言,我更喜欢第一种方法,但我需要你的建议 谢谢我不太喜欢第一种方法。您必须决定由谁负责确保方法的正确
谢谢我不太喜欢第一种方法。您必须决定由谁负责确保方法的正确输入。例如,您可以在方法中首先验证输入。如果输入无效,那么我认为您应该抛出ArgumentNullException或ArgumentException,然后稍后再处理它。API的正确响应应为状态代码400(错误请求)。使用ActionResult作为返回类型来返回这样的状态代码。 也可以通过中间件进行验证,您只需检查控制器中的模型状态。 我认为,如果您愿意,可以将模型验证与其他框架(如Fluent validation或类似框架)联系起来
您也可以在控制器中或其他地方手动调用验证程序,并使用验证结果返回正确的http状态代码就个人而言,我发现由类型化异常控制的流执行比返回结果数据的旧技术(尤其是DDD)更具OOP性。这是否回答了您的问题?