Architecture 控制器收到错误输入时会发生什么情况?它是否应该将错误的输入传播到UseCaseInteractor?

Architecture 控制器收到错误输入时会发生什么情况?它是否应该将错误的输入传播到UseCaseInteractor?,architecture,clean-architecture,Architecture,Clean Architecture,根据我在中的理解,接口适配器层中的对象使应用程序的核心适应可能的不同基础结构。这样,应用程序的核心可以从不同的来源获取输入,比如HTTP请求和控制台命令 通常,控制器接受输入,演示者给出输出,因为控制器是适配器,可能需要将给定的输入转换为用例交互者接受的不同格式。在这种情况下,当控制器收到错误的输入时会发生什么?既然输出是由演示者给出的,它如何告诉客户端发生了错误 编辑: 更好地考虑,控制器不应该关心输入是否有效,它应该尝试始终转换输入,即使需要将一个无效输入转换为另一个无效输入。UseCase

根据我在中的理解,接口适配器层中的对象使应用程序的核心适应可能的不同基础结构。这样,应用程序的核心可以从不同的来源获取输入,比如HTTP请求和控制台命令

通常,
控制器
接受输入,
演示者
给出输出,因为控制器是适配器,可能需要将给定的输入转换为
用例交互者
接受的不同格式。在这种情况下,当控制器收到错误的输入时会发生什么?既然输出是由演示者给出的,它如何告诉客户端发生了错误

编辑: 更好地考虑,
控制器
不应该关心输入是否有效,它应该尝试始终转换输入,即使需要将一个无效输入转换为另一个无效输入。
UseCaseInteractor
应始终返回有意义的响应,它不应将异常传播给调用方。因此,当
控制器
获得错误输入时,它只会将错误输入发送给被调用的交互者,然后交互者就可以正确处理错误输入(它的应用程序逻辑),并通过其呈现者呈现错误消息。因为控制器的输入就是输入,它的工作最多就是适应,对吗?

你在“编辑”中得到了它。实际的输入验证应该在用例交互器中的业务逻辑上进行。控制器执行“简单”的数据转换

示例:视图发送一个日期字符串。控制器尝试将其转换为日期对象。如果输入字符串不是有效的日期格式,控制器会将此信息传递给用例交互者,例如作为null或函数语言中的选项,或作为任何其他类型,向用例交互者表明输入日期无效。用例交互者然后决定如何处理这个输入。

你在“编辑”中得到了它。实际的输入验证应该在用例交互器中的业务逻辑上进行。控制器执行“简单”的数据转换


示例:视图发送一个日期字符串。控制器尝试将其转换为日期对象。如果输入字符串不是有效的日期格式,控制器会将此信息传递给用例交互者,例如作为null或函数语言中的选项,或作为任何其他类型,向用例交互者表明输入日期无效。用例交互者然后决定如何处理该输入。

我认为您应该将标题重命名为“在干净的体系结构中验证输入数据的位置”。我认为这将更好地描述您的问题,并帮助其他人找到您的问题。我认为您应该将标题重命名为“在干净的体系结构中验证输入数据的位置”。我认为这将更好地描述您的问题,并帮助其他人找到您的问题。