• 阿里巴巴springcloud的gateway网关如何用继承接口WebExceptionHandler定义一个json格式的404错误页面实例


    如果你想通过实现 WebExceptionHandler 接口来定义一个返回 JSON 格式的 404 错误页面的实例,可以按照以下方式操作:
    import org.springframework.core.annotation.Order;
    import org.springframework.http.HttpStatus;
    import org.springframework.stereotype.Component;
    import org.springframework.web.server.ServerWebExchange;
    import org.springframework.web.server.WebExceptionHandler;
    import reactor.core.publisher.Mono;

    @Component
    @Order(-2)
    public class CustomErrorWebExceptionHandler implements WebExceptionHandler {

        @Override
        public Mono handle(ServerWebExchange exchange, Throwable ex) {
            if (HttpStatus.NOT_FOUND.equals(exchange.getResponse().getStatusCode())) {
                exchange.getResponse().setStatusCode(HttpStatus.NOT_FOUND);
                exchange.getResponse().getHeaders().setContentType(MediaType.APPLICATION_JSON);
                String errorMessage = "{\"error\": \"Custom 404 Error\"}";
                return exchange.getResponse().writeWith(Mono.just(exchange.getResponse()
                        .bufferFactory().wrap(errorMessage.getBytes())));
            }
            return Mono.error(ex);
        }
    }
    在这个例子中,我们创建了一个名为 CustomErrorWebExceptionHandler 的自定义异常处理器,实现了 WebExceptionHandler 接口。通过实现 handle() 方法,我们定义了处理 404 错误的逻辑。

    在 handle() 方法中,我们首先检查响应的状态码是否为 404。如果是,我们设置响应的状态码为 404,内容类型为 application/json。然后,我们设置错误页面的内容为 {"error": "Custom 404 Error"},并将其作为 JSON 写入到响应体中。

    请确保将该类标记为 @Component,以使其成为 Spring 的 Bean,并通过 @Order 注解指定优先级。

    这样,当使用阿里巴巴的 Spring Cloud Gateway 运行时遇到 404 错误时,将使用自定义异常处理器来返回 JSON 格式的错误页面。

  • 相关阅读:
    PaddleOCRv3之三:rec识别部分训练
    ElasticSearch的安装配置
    CADD课程学习(7)-- 模拟靶点和小分子相互作用 (半柔性对接 AutoDock)
    【k8s】1、基础概念和架构及组件
    Windows socket测试工具
    Activiti监听器
    力扣(LeetCode)2530. 执行 K 次操作后的最大分数(C++)
    抢先看!阿里发布2023最新版分布式核心小册,GitHub标星破已千万
    LeetCode 449. Serialize and Deserialize BST【树,BFS,DFS,栈】困难
    8. python str( )函数
  • 原文地址:https://blog.csdn.net/gb4215287/article/details/132740920