阿里巴巴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<Void> 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 格式的错误页面。

相关推荐
编程、小哥哥1 小时前
Java面试场景:从音视频到AI应用的技术探讨
spring boot·spring cloud·微服务·音视频·java面试·ai应用
lichuangcsdn6 小时前
【springcloud学习(dalston.sr1)】Eureka服务端集群的搭建(含源代码)(二)
学习·spring cloud·eureka
Hello World......9 小时前
互联网大厂Java面试:从Spring到微服务的全面探讨
java·spring boot·spring cloud·微服务·面试·技术栈·互联网大厂
LYPHARD MELODY。14 小时前
将 JSON 批量转换为 XML:深度解析与完整实现指南
xml·json
爱吃涮毛肚的肥肥(暂时吃不了版)16 小时前
项目班——0510——JSON网络封装
c++·算法·json
GISer_Jing16 小时前
[前端高频]数组转树、数组扁平化、深拷贝、JSON.stringify&JSON.parse等手撕
前端·javascript·json
lichuangcsdn1 天前
【springcloud学习(dalston.sr1)】Eureka 客户端服务注册(含源代码)(四)
学习·spring cloud·eureka
泽济天下1 天前
【工作记录】Kong Gateway入门篇之简介
gateway·kong
小吕学编程1 天前
Jackson使用详解
java·javascript·数据库·json
SHUIPING_YANG1 天前
Nginx 返回 504 状态码表示 网关超时(Gateway Timeout)原因排查
运维·nginx·gateway