统一返回和统一异常处理
新增响应码信息
public enum BaseResponseCode {
SUCCESS_STATUS(1, "请求成功","请求成功"),
FAIL_STATUS(-1,"请求失败","请求失败");
public int getCode() {
return code;
}
public String getDescription() {
return description;
}
public String getMessage() {
return message;
}
private final int code;
private final String description;
private final String message;
BaseResponseCode(int code, String message, String description) {
this.code = code;
this.description = description;
this.message = message;
}
}
新增统一响应体
@Data
public class ResultBody {
private String message;
private Integer code;
private Object data;
private String serialNumber;
public ResultBody(String message, Integer code, Object data) {
this.message = message;
this.code = code;
this.data = data;
this.serialNumber = IdUtil.randomUUID();
}
public static ResultBody success(Object resultData) {
return new ResultBody(BaseResponseCode.SUCCESS_STATUS.getMessage(),BaseResponseCode.SUCCESS_STATUS.getCode(),resultData);
}
public static ResultBody fail() {
return new ResultBody(BaseResponseCode.FAIL_STATUS.getMessage(),BaseResponseCode.FAIL_STATUS.getCode(),null);
}
public static ResultBody fail(String message) {
return new ResultBody(message,BaseResponseCode.FAIL_STATUS.getCode(),null);
}
}
新增统一异常处理和全局响应信息处理
@RestControllerAdvice
public class GlobalResponseHandler implements ResponseBodyAdvice<Object> {
@ExceptionHandler(Exception.class)
public ResultBody handleException( Exception e) {
logger.error(e.getMessage());
return ResultBody.fail(e.getMessage());
}
@Override
public boolean supports(@NotNull MethodParameter methodParameter, @NotNull Class<? extends HttpMessageConverter<?>> aClass) {
return true;
}
@Override
public Object beforeBodyWrite(Object o, @NotNull MethodParameter methodParameter, @NotNull MediaType mediaType, @NotNull Class<? extends HttpMessageConverter<?>> aClass, @NotNull ServerHttpRequest serverHttpRequest, @NotNull ServerHttpResponse serverHttpResponse) {
if (o != null) {
logger.info(o.toString());
}
return ResultBody.success(o);
}
}
@ModelAttribute和@InitBinder
blog.csdn.net/weixin_4370…