springboot关于rest api 404、500全局异常处理

Spring Boot关于Rest Api前后端分离404、500全局异常处理 1、自定义返回json格式 /** * Created by 菜园子 on 2019/3/25. */ public class Result { private int code;//0请求失败;1请求成功;其它服务异常 private String msg; private Object data; public Result() { ... 阅读详情

两种实现方式

一、通过实现ErrorController接口 重写getErrorPath方法

@RestController
public class RestNotFoundFilter implements ErrorController {

	private static final int NOT_FOUND_CODE = 404;
	
	private static final String ERROR_PATH = "/error";
	
	@RequestMapping(ERROR_PATH)
	@ResponseStatus(value=HttpStatus.NOT_FOUND)
	public Result<?> handleError() {
		Result<?> result = new Result<>();
		result.setErrorcode(NOT_FOUND_CODE);
		result.setErrormsg("访问路径不存在");
		return result;
	}
	
	@Override
	public String getErrorPath() {
		return ERROR_PATH;
	}

}

 返回实体

@Data
public class Result implements Serializable {

    private boolean success;

    private Integer errcode;

    private String errmsg;

    private Object data;

    private Result(boolean success, Integer errcode, String errmsg, Object data){
        this.success = success;
        this.errcode = errcode;
        this.errmsg = errmsg;
        this.data = data;
    }

    /**
     * 有结果集
     * @param success 是否成功
     * @param errcode 返回码
     * @param errmsg 返回信息
     * @param data 返回数据
     * @return
     */
    public static Result ok(boolean success, Integer errcode, String errmsg, Object data){
        return new Result(success,errcode,errmsg,data);
    }

    /**
     * 有返回数据集
     * @param data 返回数据集
     * @return
     */
    public static Result ok(Object data){
       return ok(true,200,null,data);
    }

    /**
     * 无结果集
     * @param errcode 返回码
     * @param errmsg 返回信息
     * @return
     */
    public static Result ok(Integer errcode,String errmsg){
        return ok(true,errcode,errmsg,null);
    }

    /**
     * 无返回数据集
     * @return
     */
    public static Result ok(){
        return ok(true,200,null,null);
    }

    /**
     * 错误
     * @param errcode 错误码
     * @param errmesg 错误信息
     * @return
     */
    public static Result error(Integer errcode,String errmesg){
        return error(errcode,errmesg,null);
    }

    /**
     * 错误
     * @param errcode 错误码
     * @param errmesg 错误信息
     * @param data 错误数据
     * @return
     */
    public static Result error(Integer errcode,String errmesg,Object data){
        return error(false,errcode,errmesg,data);
    }

    /**
     * 错误
     * @param success
     * @param errcode
     * @param errmsg
     * @param data
     * @return
     */
    public static Result error(boolean success, Integer errcode, String errmsg, Object data){
        return new Result(success,errcode,errmsg,data);
    }
}

 二:定义全局异常处理

@ControllerAdvice
public class ExceptionAdvice {

    @ExceptionHandler(value=Exception.class)
	public Object errorHandler(HttpServletRequest request, HttpServletResponse response, Exception e) {
		Result<?> result = new Result<>();
		log.info("全局异常处理器执行中...");
		StringBuffer requestURL = request.getRequestURL();
		log.info(">>>>>>>>>>>>>>异常请求路径:"+requestURL+"<<<<<<<<<<<<<<<<<<<<<");
		
		if (e instanceof org.springframework.web.servlet.NoHandlerFoundException) {
			result.setErrorcode(NOT_FOUND_CODE);
       } else {
    	   result.setErrorcode(SERVER_ERROR_CODE);
       }
		return e;
		
	}
}

 并且在配置文件中设置

spring.mvc.throw-exception-if-no-handler-found=true
spring.resources.add-mappings=false

 

第一个 spring.mvc.throw-exception-if-no-handler-found 告诉 SpringBoot 当出现 404 错误时, 直接抛出异常. 第二个 spring.resources.add-mappings 告诉 SpringBoot 不要为我们工程中的资源文件建立映射. 这两个配置正是 RESTful 服务所需要的

 

SpringBoot+Vue3+DeepSeek构建智能健身管理系统实战 在Web开发领域,前后端分离架构已成为现代应用开发的主流范式,它通过解耦前端展示与后端业务逻辑,实现了开发效率与维护性的双重提升。其核心原理在于前端通过HTTP协议调用后端提供的RESTful API接口进行数据交互,这种模式让技术团队能够并行开发、独立部署。从技术价值看,前后端分离不仅提升了开发体验,更通过清晰的职责划分增强了系统的可扩展性。在实际应用场景中,健身管理系统这类业务边界清晰的项目,成为学习前后端分离技术的理想载体。通过整合SpringBoot后端框架与Vue3前端框架,开发者能够完整实践从数 阅读详情

相关推荐

SpringBoot+Vue学生选课系统实战:从架构到部署的全栈开发指南

在Java Web开发领域,SpringBoot以其自动配置和快速启动的特性,成为构建现代化后端服务的首选框架。其核心原理在于通过约定大于配置的理念,简化了传统Spring应用的初始搭建和开发过程,极大地提升了开发效率。这一技术价值在于,它让开发者能够更专注于业务逻辑的实现,而非繁琐的配置。结合Vue.js这一渐进式前端框架,可以构建出前后端分离、用户体验良好的单页面应用。这种架构模式广泛应用于各类管理系统、电商平台等需要复杂交互和动态数据展示的场景。本文以典型的“学生选课系统”为例,深入探讨如何整合Spr

weixin_33725270的博客 478

SpringBoot 默认错误处理机制源码窥探

当项目代码执行错误(5XX)、找不到页面(4xx)或其他错误时,SpringBoot 自动将请求转发到 /error 下进行处理,所以每次出现错误我们都能得到这样一个页面。相信很多人都跟我一样,看到这个页面就想到是页面找不到(404)。但是却没有注意到 Spring 给我们的这么多提示。无意中发现这个,我们访问的路径是 /logins,但是错误提示确实 /error找不到映射。这是...

ZCF1024 的后宫 744

SpringBoot中@ControllerAdvice/@RestControlAdvice+@ExceptionHandler实现全局异常捕获与处理

在编写Controller接口时,为避免接口因为未知的异常导致返回不友好的结果和提示。如果不进行全局异常捕获则需要对每个接口进行try-catch或其他操作。可以对Controller进行全局的异常捕获和处理,一旦发生异常,则返回通用的500响应码与通用错误提示。并将异常发生的具体的文件、类、方法、行数信息记录到日志。@ControllerAdvice,是Spring3.2提供的新注解,它是一个Controller增强器,

BADAO_LIUMANG_QIZHI的博客 4401

springboot接口发布后502

springboot接口发布后502

jam476的专栏 2022

鸿蒙点餐后端完整工程:SpringBoot服务+接口文档+MySQL建表脚本

直接可用的鸿蒙扫码点餐系统服务端代码,基于SpringBoot 2.x开发,专为HarmonyOS手机端App提供后端支撑。包含用户下单、订单状态管理、菜品与分类查询、桌台实时状态同步等全部核心功能接口;所有API均配套PDF格式接口文档,明确标注请求路径、HTTP方法、入参结构(含必填/选填说明)、响应字段及真实示例;数据库部分提供完整的MySQL建表SQL脚本(order_system.sql)和可视化ER图(ER图.png),覆盖用户、菜品、订单、桌台等关键实体及关联关系;额外附带扫码点餐二维码生成逻

nept的博客 201

一文搞懂 Transformer 工作原理 !!

本文将从单头Attention工作原理多头Attention工作原理全连接网络工作原理三个方面,实现一文搞懂Transformer的工作原理。Transformer工作原理。

不要给自己设限,尝试更多可能(思所向 皆可往) 2988

【Spring boot学习第十一天】错误处理的三种方式

springboot的错误处理有几种不同的方式,这里我们介绍三种最常见的方式,首先我们来看第一种。 方法一: 该方式会将一切错误页面引导至我们自定义的页面。 我们将所有的错误映射到/error,然后自己实现ErrorController,当遇到错误时,后台会自动调用该实现ErrorController的控制器。 首先我们在pom.xml中添加ErrorController的相关依赖(如果有...

Love_云宝儿的博客 484

ANSYS APDL 异类单元连接实战:MPC方法在壳-实体装配中的应用

本文详细介绍了在ANSYS APDL中使用MPC方法实现壳单元与实体单元高效连接的技术要点。通过分析工程仿真中的常见需求,阐述了MPC方法在解决异类单元连接问题上的优势,包括网格独立性、自由度耦合和载荷传递等特性,并提供了具体的APDL命令流操作示例和实用经验技巧。

weixin_33391446的博客 178

SpringBoot全局异常处理

SpringBoot全局异常处理: https://blog.youkuaiyun.com/jianggujin/article/details/79205516 https://blog.youkuaiyun.com/jianggujin/article/details/79217845   springboot全局异常控制处理 https://blog.youkuaiyun.com/u013086392/article...

夕时明月 212

企业如何利用群晖 NAS 构建高效数据备份与容灾体系

群晖 NAS 不仅是一个企业级文件存储设备,更是一个完整的数据保护平台。通过 Active Backup for Business、快照技术和多层次容灾方案,企业可以在确保数据安全的同时,实现业务的高可用与持续性。在当今充满不确定性的环境下,企业应将数据备份与容灾体系作为 IT 战略的重要组成部分,而群晖 NAS 则是一个值得信赖的核心基石。

Trihawk的博客 491

智能车‘大脑’的诞生:揭秘电磁循迹代码背后的控制论与系统思维

本文深入探讨智能车电磁循迹系统的核心架构与控制原理,揭示了其作为精密闭环系统如何通过模块化设计、信号处理、PID控制算法及电机驱动实现自主导航。重点分析了电磁信号采集与处理流程框架,为开发者提供从理论到实践的全面指南。

arduino9maker的博客 531

解决spring boot中rest接口404 500等错误返回统一的json格式

解决spring boot中rest接口404 500等错误返回统一的json格式

qq_43741569的博客 2489

RNA 8. SCI文章中差异基因表达--热图 (heatmap) 进阶:从数据标准化到多维度注释

本文深入探讨了RNA差异基因表达分析中热图(heatmap)的进阶应用,从数据标准化到多维度注释。详细介绍了FPKM标准化、Z-score转换等关键技术,以及pheatmap包的高级注释功能,帮助研究者制作发表级热图。文章还提供了视觉优化策略和生物学意义衔接的实用建议,助力SCI论文的数据可视化。

weixin_29051149的博客 301

解决spring boot中rest接口404,500等错误返回统一的json格式

在开发rest接口时,我们往往会定义统一的返回格式,列如: { "status": true, "code": 200, "message": null, "data": [ { "id": "101", "name": "jack" }, { "id": "102", "name": "jason"

AndyLizh的专栏 5万+

OpenEuler内核编译及替换

一、内核源码下载 在gitee上下载OpenEuler内核源码 下载地址 选择需要的内核版本源码压缩包进行下载 二、内核编译 1.解压缩 将下载好的源码进行解压 tar xvf openeuler-kernel-4.19.90-2107.1.0.tar.gz 2.清理源代码树 解压后得到一个名为kernel的内核源码文件夹,进入后执行命令 make mrproper 清理过去内核编译产生的config,第一次编译时可不执行此命令 3.生成内核配置文件.config 先将将系统原配置文件拷贝过来,原

m0_56602092的博客 2万+

insightface scrfd人脸检测测试

pip install mmdet 自动安装mmcv win10上可以,服务器上没成功

jacke121的专栏 4022

Spring Boot中的异常处理策略

在Spring Boot中,我们可以通过@ControllerAdvice注解来定义全局异常处理器,统一处理应用程序中抛出的异常。为了更好地管理和识别不同的异常情况,可以定义自定义异常,并结合全局异常处理器来处理这些异常。方法处理所有未捕获的Exception异常,并返回一个带有HTTP状态码500和错误消息的响应。:根据异常的类型和场景返回适当的HTTP状态码,例如404、500等。:根据业务需求和场景,确定全局异常处理和局部异常处理的范围。:在处理异常时,记录相关的异常信息,便于排查和分析问题。

微赚淘客系统开发者博客 718

【WRF-Chem 工具】CAMStoWRF详解:CAMS数据下载及处理

【WRF-Chem 工具】CAMStoWRF详解:CAMS数据下载及处理

WW、forever的博客 195

springboot 404返回自定义json(只进入过滤器)

 今天在公司没事干,记一次springboot遇到的一些坑,在百度上也没有搜到类似的问题和答案(或者说 答案不是我想要的) 当我们在SpringBoot遇到了404或者500的错误的时候,你们会怎么办? 写一个全局异常?写一个错误页面? 不不不,其实都不需要这些的,当我们使用微服务架构的时候我们是不是使用的都是Rest API? 所以,我今天在网上搜了很多返回404...

weixin_30919235的博客 247

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

基于SpringBoot和Vue毕设:新手入门实战指南与避坑清单

技术栈东拼西凑:后端用 JSP+Servlet,前端临时抱佛脚写 jQuery,写到一半发现教程断层,百度不到一起。前后端各跑各的:后端同学把接口写在 Word 里,前端同学用 Postman 调通就完事,真正联调时字段大小写、日期格式、分页参数全对不上。部署流程不熟:本地跑得好好的,放到服务器 404、500 轮番轰炸,静态资源 404、接口 502,老师演示现场直接“社死”。“能跑起来”≠“能上线”,中间缺的是一条可复制、最小可运行的全栈链路模板。

2600_94959897的博客 259

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Spring Boot 中的默认异常处理机制

Spring Boot 提供了一套完善的默认异常处理机制,通过内置的 BasicErrorController 自动处理应用中的各类异常情况。这套机制基于 Spring MVC 的异常处理框架构建,具有以下特点:这套机制既适用于传统Web应用的页面错误展示,也适配RESTful API的JSON错误响应,为开发者提供了开箱即用的异常处理解决方案。

Made In SQL 1088

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【Day01】关于spring boot学习遇到的bug归纳以及解决方法

1.在rest-api中启动后端的时候,在传入的内容中,dateTime的类型需要有特定的格式: 正确格式: 2022-03-15T09:25:33.784 中间是有一个大写字母T所作连接 错误格式: 2022-03-15TO09:25:33.784(在中间加入了TO,最后运行会error 500) 2.关于传入数据库的xml文件中,插入的数据属性需要与自己定义的属性一致,并且VALUES中所对应的属性应该是在相对应的类中所存在的属性,而不是数据库中的属性或者自定义的属性 例如

weixin_53981424的博客 290

spring cloud学习笔记之spring boot ribbon客户端负载均衡

参考博文:https://www.jianshu.com/p/1bd66db5dc46 Ribbon简介 Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。通过Spring Cloud的封装,可以让我们轻松地将面向服务的REST模版请求自动转换成客户端负载均衡的服务调用。Spring Cloud Ribbon虽...

Vaingloryss的博客 271

前端工程化

项目创建之后,我们打开项目,项目的首页默认是public下的index.html页面这个html页面默认引入入口文件main.js而main.js中使用import引入了很多公共文件,例如:App.vueVue的组件文件都是以.vue结尾,每个组件都由三部分组成styletemplate标签是模板部分,由他来生成html代码script标签用来编写js代码,它用来控制template中数据的来源和行为//基本格式

立志成为架构师 2056

SpringBoot 3种错误处理方式

方式一:自定义错误控制器,发生错误,将页面跳转至错误页面 @Controller @RequestMapping("/error") public class BaseErrorController implements ErrorController { private static final Logger Log= LoggerFactory.getLogger(BaseErro...

javazht的博客 485
上一篇: centOS7 防火墙命令大全
下一篇: springboot项目访问jsp页面报404
spring&fans
博客等级 码龄9年 9粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值