springBoot的返回code数据的处理以及统一异常处理
2018-03-19 16:53
916 查看
1,首先返回给前端的消息有提示操作正确的消息,也有提示操作错误的消息。而这样的消息都应该以一种统一的格式返回给前端,前端根据返回的消息中的消息码判断操作成功或者失败.所以新建ResponseMessage封装这种数据格式.用来lombok省去自己写get,set方法.
2,消息码的定义应该封装到一个统一的地方,这里新建一个枚举ResultEnum,这样所有操作的消息码和消息描述就放在了一个地方。对异常进行统一处理。
3,对于操作的结果返回不同的responseMessage,用了一个ResultUtil工具类解决。
4,自定义的异常类
5,接下来就是对异常的处理,所有异常用一个@ControllerAdvice的类进行处理。
/** 描述: HttpRequest请求返回的最外层对象,用一种统一的格式返回给前端 @author HobbyBear @create 2018-03-17 15:26 */ @Data public class ResponseMessage<T> { //错误码 private int code; //信息描述 private String msg; //具体的信息内容 private T data; }
2,消息码的定义应该封装到一个统一的地方,这里新建一个枚举ResultEnum,这样所有操作的消息码和消息描述就放在了一个地方。对异常进行统一处理。
public enum ResultEnum { UNKNOWN_ERROR(-100, "未知错误"), NEED_LOGIN(-1, "未登录"), REPEAT_REGISTER(-2, "该用户已注册"), USER_NOT_EXIST(-3, "不存在该用户"), PASSWORD_ERROR(-4, "密码错误"), EMPTY_USERNAME(-5, "用户名为空"), EMPTY_PASSWORD(-6, "密码为空"), SUCCESS(0, "success"), SYSTEM_ERROR(-1000001,"系统错误"); private Integer code; private String msg; private ResultEnum(Integer code, String msg) { this.code = code; this.msg = msg; } public Integer getCode() { return code; } public String getMsg() { return msg; } }
3,对于操作的结果返回不同的responseMessage,用了一个ResultUtil工具类解决。
/** 描述: 对返回给前端的信息进行处理,对ResponseMessage进行处理的工具类 @author HobbyBear @create 2018-03-17 15:33 */ public class ResultUtil { public static ResponseMessage success(Object object) { ResponseMessage responseMessage = new ResponseMessage(); responseMessage.setCode(ResultEnum.SUCCESS.getCode()); responseMessage.setMsg(ResultEnum.SUCCESS.getMsg()); responseMessage.setData(object); return responseMessage; } /** * 操作成功不返回消息 * @return */ public static ResponseMessage success() { return success(null); } /** * 操作失败返回的消息 * @param code * @param msg * @return */ public static ResponseMessage error(int code,String msg) { ResponseMessage responseMessage = new ResponseMessage(); responseMessage.setCode(code); responseMessage.setMsg(msg); return responseMessage; } /** * 操作失败返回消息,对error的重载 * @param resultEnum * @return */ public static ResponseMessage error(ResultEnum resultEnum){ ResponseMessage responseMessage = new ResponseMessage(); responseMessage.setCode(resultEnum.getCode()); responseMessage.setMsg(resultEnum.getMsg()); return responseMessage; } }
4,自定义的异常类
public class MyException extends RuntimeException { private int code; private String errMsg; public MyException(ResultEnum resultEnum){ this.code = resultEnum.getCode(); this.errMsg = resultEnum.getMsg(); } public Integer getCode() { return code; } public void setCode(Integer code) { this.code = code; } }
5,接下来就是对异常的处理,所有异常用一个@ControllerAdvice的类进行处理。
/** 描述: 统一对异常进行处理的类 @author HobbyBear @create 2018-03-17 16:36 */ @ControllerAdvice public class ExceptionHandler { private final static Logger logger= LoggerFactory.getLogger(ExceptionHandler.class); @org.springframework.web.bind.annotation.ExceptionHandler(value = Exception.class) public ResponseMessage handel(Exception e){ if(e instanceof MyException){ MyException myException =(MyException)e; return ResultUtil.error( myException.getCode(),myException.getMessage()); }else { logger.error("[系统异常] {}",e); return ResultUtil.error(ResultEnum.SYSTEM_ERROR); } } }
相关文章推荐
- 【SpringBoot】Http请求统一异常(返回数据)处理与单元测试
- spring-boot统一处理返回给前台的数据格式(避免返回异常堆栈信息,干扰用户体验)
- SpringBoot进阶之使用异常替代返回错误码(拦截异常并统一处理)
- spring boot / cloud (二) 规范响应格式以及统一异常处理
- spring boot - cloud (二) 规范响应格式以及统一异常处理
- SpringBoot学习之统一异常处理、404处理以及集成Swagger2
- Spring boot 自定义统一异常处理(以及规范响应格式)
- spring boot最新教程(四):返回json数据以及集成fastjson的使用
- Spring Boot入门4——统一异常处理
- SpringBoot统一异常处理
- Spring Boot @ControllerAdvice 处理全局异常,返回固定格式Json
- STS创建Spring Boot项目实战(Rest接口、数据库、用户认证、分布式Token JWT、Redis操作、日志和统一异常处理)
- Spring Boot学习进阶笔记(五)-异常统一处理
- spring-boot中统一异常处理
- Spring Boot中Web应用的统一异常处理
- Spring-Boot 统一异常处理
- spring 统一处理http request请求返回数据,返回加密信息等
- spring boot的统一异常处理
- springboot 统一异常处理
- Spring Boot中Web应用的统一异常处理