gpt4 book ai didi

java - 检查 Controller 中的业务逻辑以提供更好的错误消息

转载 作者:行者123 更新时间:2023-11-29 06:49:27 24 4
gpt4 key购买 nike

我有一个返回 UserDto 对象的服务方法。但是,在某些情况下,对 Controller 的请求会返回 200 以外的 HTTP 状态,但服务只能返回 nullUserDto

将一些业务逻辑移动到 Controller 并直接调用存储库以返回更详细的错误消息是否是一种不好的做法,因为服务无法将错误消息传回给 Controller ?

最佳答案

您可以通过让服务抛出业务异常并让 Controller 对此使用react来做得更好。例如,CustomerService 可以抛出一个“CustomerNotFoundException”, Controller 可以将其转换为适当的 HTTP 状态代码,如下所示:

@ExceptionHandler({ CustomerNotFoundException.class })
public ResponseEntity handleException(CustomerNotFoundException ex, WebRequest request) {
ErrorDetails errorDetails = new ErrorDetails(new Date(), ex.getMessage(), request.getDescription(false));
return new ResponseEntity<>(errorDetails, HttpStatus.NOT_FOUND);
}

我建议不要将业务逻辑移至 Controller ,因为 Controller 更像是一个基础架构组件,而不是域逻辑。此外,考虑添加另一个协议(protocol),例如二进制协议(protocol),它不会使用 Controller 层。您可能会错过验证或业务规则。

关于java - 检查 Controller 中的业务逻辑以提供更好的错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53778953/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com