【请求类】
服务端为了更好区分响应的状态,需要自定义错误码与错误信息。而且,直接返回data会使响应格式紊乱,前端不好处理。所以需要将http响应封装为“errCode+errMsg+data”的格式。
1. 自定义Resp类:@Data 注解是lombok插件提供的一个注解,可让我们省略getter与setter方法,提供代码简洁度。
2. 在RespUtil类中自定义
Resp<T> successResp(T data)
与
Resp errorResp(Integer errCode, String errMsg)
方法自动封装resp响应。
3. 为了更好统一管理错误码与错误信息,将错误码与错误信息固定对应,在constant包下的Status类中定义enum类型的错误码。
【异常类】
java自带的异常类RuntimeException只包含errMsg字段,缺少我们自定义响应格式的errCode字段,所以需要自定义一个异常类,将errCode字段封装进去。
1. 继承RuntimeException类,自定义一个接口异常类。
2. @ControllerAdvice 注解定义全局异常处理类。
3. 此类中包含 @ExceptionHandler 注解的方法,负责处理所有 Controller 层抛出的 Exception 及其子类的异常。在此方法中将自定义异常类包含的errCode与errMsg利用RespUtil.errorResp()装入响应中。
4. 此外@Slf4j 注解可以让我们省略LoggerFactory.getLogger()方法
5.当controller层需要抛出异常时,使用异常类构造方法,传入定义好的常数状态码抛出new出来的异常。
throw new BlogException(Status.ApiErr.PERMISSION_DENIED);