开发框架-Spring-错误或异常时返回统一的json格式
来源:互联网 发布:股票短线王软件 编辑:程序博客网 时间:2024/06/15 21:09
原文出处:http://blog.csdn.net/gebitan505/article/details/70158870
demo示例:https://github.com/yongshun/some_java_code/tree/master/SpringBootRESTfulErrorHandlerDemo
在开发rest接口时,我们往往会定义统一的返回格式,列如:
{ "status": true, "code": 200, "message": null, "data": [ { "id": "101", "name": "jack" }, { "id": "102", "name": "jason" } ]}
但是如果调用方请求我们的api时把接口地址写错了,就会得到一个404错误,在传统的web系统中我们可自定义404错误页面,展示更友好。
在spring boot中其实也是返回了一个json格式的数据,如下:
{ "timestamp": 1492063521109, "status": 404, "error": "Not Found", "message": "No message available", "path": "/rest11/auth"}
告诉我们哪个地址是没找到,其实也挺友好的,但是因为我们上面自定义的数据格式跟下面的不一致,当用户拿到这个返回的时候是无法识别的,其中最明显的是status字段。
我们自定义的是boolean类型,表示是否成功
这边返回的就是http的状态码
所以我们需要在发生这种系统错误时也能返回我们自定义的那种格式
定义一个异常处理类
import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.web.bind.annotation.ControllerAdvice;import org.springframework.web.bind.annotation.ExceptionHandler;import org.springframework.web.bind.annotation.ResponseBody;@ControllerAdvicepublic class GlobalExceptionHandler { private Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class); /** * 系统异常处理,比如:404,500 * @param req * @param resp * @param e * @return * @throws Exception */ @ExceptionHandler(value = Exception.class) @ResponseBody public ResponseData defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception { logger.error("", e); ResponseData r = new ResponseData(); r.setMessage(e.getMessage()); if (e instanceof org.springframework.web.servlet.NoHandlerFoundException) { r.setCode(404); } else { r.setCode(500); } r.setData(null); r.setStatus(false); return r; }}
ResponseData是我们返回格式的实体类
这种在发生错误时这边会捕获到,然后封装好返回格式,返回给调用方
最后关键的一步是在spring boot的配置文件中加上如下配置:
#出现错误时, 直接抛出异常spring.mvc.throw-exception-if-no-handler-found=true#不要为我们工程中的资源文件建立映射spring.resources.add-mappings=false
然后我们调用一个不存在的接口时,返回的错误信息就是我们自定义的那种格式了
{ "status": false, "code": 404, "message": "No handler found for GET /rest11/auth", "data": null}
阅读全文
0 0
- 开发框架-Spring-错误或异常时返回统一的json格式
- spring mvc统一处理异常时候返回json或xml
- 解决spring boot中rest接口404,500等错误返回统一的json格式
- JSON统一格式返回值,统一异常处理
- Spring MVC 全局异常处理-RESTAPI接口返回统一JSON格式-自定义异常处理--404异常捕捉
- Spring 返回JSON格式对日期字段的返回统一处理
- MVC WebAPI框架里设置异常返回格式统一
- Spring MVC 异常处理统一为json格式
- spring mvc返回json格式错误
- 406错误spring mvc 返回json格式
- Spring/SpringBoot定义统一异常错误码返回
- 用一个切面来统一返回前端的JSON格式
- 二、后台实战——格式统一的Json返回
- SpringMVC返回json数据的日期格式统一转换
- springmvc返回统一格式json数据
- Spring Boot @ControllerAdvice 处理全局异常,返回固定格式Json
- SpringMVC统一异常处理 返回JSON解决方案
- Spring MVC返回JSON格式的数据
- 从字符串中提取出数字
- 项目阶段总结
- 并发编程修九:并发容器之CopyOnWriteArrayList
- Linux用户登录记录日志和相关查看命令汇总
- Spring框架之基础类—AttributeAccessorSupport抽象类
- 开发框架-Spring-错误或异常时返回统一的json格式
- HTML中的密码框
- CMake基础篇---构建可执行文件
- 如何不用iframe和ajax来重复加载页面
- 《阿里巴巴Java开发规约》插件Eclipse版使用指南
- 集群之 -- rabbitmq
- python爬取 热门小说
- ROS中launch file基本介绍
- JVM调优之jstack找出最耗cpu的线程并定位代码