1、返回实体对象的创建
首先,一个项目中为了清晰、统一的处理返回信息,所以需要封装一个返回对象,这个对象需要有响应code码、响应code码对应的描述信息、以及返回数据对象。下面我们来看一下具体代码:
public class ApiResult implements Serializable { /** * 响应码 */ private String resultCode; /** * 响应描述 */ public String msg; /** * 返回数据对象 */ public Map<String, Object> data = new HashMap<>(); public ApiResult() { this.resultCode = ApiResponse.SUCCESS.getResCode(); this.msg = ApiResponse.SUCCESS.getResDesc(); } public ApiResult(Map<String, Object> data) { this.resultCode = ApiResponse.SUCCESS.getResCode(); this.msg = ApiResponse.SUCCESS.getResDesc(); this.data = data; } public ApiResult(ApiResponse resp, Map<String, Object> data) { this.resultCode = resp.getResCode(); this.msg = resp.getResDesc(); this.data = data; } public ApiResult(ApiResponse resp, Map<String, Object> data, String msg) { this.resultCode = resp.getResCode(); this.msg = msg; this.data = data; } }
2、全局异常配置
当出现异常情况时,要作为一个统一的异常类来处理相关信息。所以才会出现全局异常类配置。具体代码如下:
public class BaseException extends Exception { /** * 响应完整信息 * * */ private ApiResponse response; public BaseException(Throwable cause) { super(cause); } public BaseException(String message) { super(message); } }
3、全局异常配置完成后,则需要配置一个全局异常处理类
异常类处理完成后,需要有一个异常处理类来完成对各种异常的统一处理,注解标记出了此类是一个Handler,然后下面的ExceptionHandler来捕获各种异常,我这里只捕获了自己定义的异常,如果有多种异常你可以每一个捕获,然后去自定义返回信息节课完成全局统一异常的处理信息。
具体代码如下
@RestControllerAdvice public class TyBusExceptionHandler { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @ExceptionHandler(BaseException.class) @ResponseBody public ApiResult handle(BaseException e) { logger.error("错误信息是:{}", e); ApiResult resp = null; ApiResponse response = e.getResponse(); if (response == null || StringUtils.isEmpty(response.getReturnMsg())) { resp = new ApiResult(e.getResponse(), null, e.getMessage()); } else { resp = new ApiResult(e.getResponse(), null); } return resp; } }
至此全局异常处理类及相关配置已完成
更多编程内容,请扫码关注《coder练习生》,如果觉得有用,也可赠送作者一杯咖啡