当前位置: 首页 > news >正文

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

http://www.lryc.cn/news/163299.html

相关文章:

  • 『力扣每日一题07』字符串最后一个单词的长度
  • 成都睿趣科技:抖音开店初期要注意什么
  • QT 5.13保姆级安装教程
  • js 创建DOM,并添加父DOM上,移除某个DOM的所有子节点
  • element el-input 二次封装
  • [源码系列:手写spring] IOC第十三节:Bean作用域,增加prototype的支持
  • 【性能优化】事件委托
  • C 风格文件输入/输出---无格式输入/输出---(std::fputc,std::putc,std::fputs)
  • 建议收藏!Harmony应用配置文件概述(Stage模型)
  • 金蝶云星空和四化智造MES(WEB)单据接口对接
  • Shell命令切换root用户、管理配置文件、检查硬件
  • DataX(MySQL同步数据到Doris)
  • sql server服务无法启动怎么办?如何正常启动?
  • SpringMVC实现文件上传和下载
  • Your build is currently configured to use Java 20.0.2 and Gradle 8.0
  • 栈 之 如何实现一个栈
  • uni-app:自带的消息提示被遮挡的解决办法(自定义消息提示框)
  • PHP设备检验系统Dreamweaver开发mysql数据库web结构php编程计算机网页代码
  • Windows 可以使用以下快捷键打开终端(命令提示符)
  • Netty编程面试题
  • math_review
  • 肖sir__设计测试用例方法之场景法04_(黑盒测试)
  • plt函数显示图片 在图片上画边界框 边界框坐标转换
  • 运行期获得文件名和行号
  • 数组操作UNIAPP
  • MySQL——无法打开MySQL8.0软件安装包或者安装过程中失败,如何解决?
  • DB2存储过程如何编写和执行
  • SpringBoot + FFmpeg实现一个简单的M3U8切片转码系统
  • SpringCloud(35):Nacos 服务发现快速入门
  • OSPF实验:配置与检测全网互通