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

相关推荐
Devin~Y33 分钟前
大厂Java面试实战:Spring Boot/Cloud + Redis/Kafka + K8s + RAG/Agent 追问全流程(小Y翻车记)
java·spring boot·redis·spring cloud·kafka·kubernetes·micrometer
七夜zippoe2 小时前
DolphinDB数据导入导出:CSV、JSON、Parquet
物联网·json·csv·parquet·dolphindb
qq_452396233 小时前
第七篇:《数据驱动测试:利用Excel/JSON/CSV管理测试数据》
json·excel
九转苍翎4 小时前
微服务学习笔记(3)——基于SpringCloud OpenFeign实现远程调用
spring cloud·openfeign
Devin~Y13 小时前
大厂Java面试实录:Spring Boot/Cloud、Kafka、Redis、K8s 与 Spring AI(RAG/Agent)三轮连环问
java·spring boot·redis·mysql·spring cloud·kafka·kubernetes
随风,奔跑18 小时前
Spring Cloud Alibaba(四)---Spring Cloud Gateway
后端·spring·gateway
jiayong2321 小时前
Hermes Agent 的 Skills、Plugins、Gateway 深度解析
ai·gateway·agent·hermes agent·hermes
LSL666_1 天前
快速Spring Cloud+ELK+AOP搭建一个简单的项目
spring·elk·spring cloud
sagima_sdu1 天前
Codex 使用指南(技术向):App、CLI 与工作流接入
linux·运维·语言模型·json
杰克尼1 天前
天机学堂项目总结(day11~day12)
spring·spring cloud