首页 > 解决方案 > 对正常的应用程序流使用 500 响应代码是否可行?使用 Angular7+Spring 设计弹出消息

问题描述

从 Java 的角度来看,使用异常来处理预期结果是错误的(异常应该是它们的名称)。

对于我的所有服务,我创建了包装机制,如果发生这种情况,基本上会提供有关失败的详细信息(所有返回都是任意的Result<?>)。现在我需要在客户端浏览器的某个弹出窗口中显示此消息。

使用 Angular,HttpClient 实际上支持捕获 http 响应错误: https ://angular.io/guide/http#error-handling

这是从服务器到客户端报告错误的可行方式吗?

Angular 中有没有办法定义一些提取器来拆分来自后端 API 的响应?

假设我要让我的整个 REST API 返回正文:

{
    messageType: "", // Success, Failure, Warning
    message: "Message",
    content: {
        ...
    }
}

这样我就可以剥离message, messageType拦截器,在弹出窗口中显示它们,然后只content作为正文传递?

标签: spring-bootangular7

解决方案


使用@ControllerAdvice 在服务端捕获所有异常并在标准结构中抛出具有预期异常消息和状态代码的用户/功能特定异常的好方法,以便前端可以有一个异常控制器来即时评估此异常消息弹出消息动态到来自服务的任何消息。


推荐阅读