-
返回结果封装
新建封装类
public class ResultResponse<T> implements Serializable { private String code; private String message; private T date; public String getCode() { return code; } public void setCode(String code) { this.code = code; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public T getDate() { return date; } public void setDate(T date) { this.date = date; } public static ResultResponse success() { ResultResponse resultResponse = new ResultResponse(); resultResponse.setCode("0000"); return resultResponse; } public static ResultResponse success(Object date) { ResultResponse resultResponse = new ResultResponse(); resultResponse.setCode("0000"); resultResponse.setMessage("成功"); resultResponse.setDate(date); return resultResponse; } public static ResultResponse fail(String code, String message) { ResultResponse resultResponse = new ResultResponse(); resultResponse.setCode(code); resultResponse.setMessage(message); return resultResponse; }
controller中返回数据使用ResultResponse包装,返回结果如下
{
"code": "0000",
"message": "成功",
"date": ""
}
-
异常处理
新建异常处理类,使用@RestControllerAdvice和@ExceptionHandler注解捕获各种异常
@RestControllerAdvice注解作用于所有使用@RestController修饰的控制类
@ExceptionHandler注解用于作用的异常类型
@RestControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(Exception.class) @ResponseStatus(HttpStatus.BAD_REQUEST) public ResultResponse handle(Exception exception) { return ResultResponse.fail("-1", getMsg(exception)); } private static String getMsg(Exception e) { StackTraceElement[] stackTrace = e.getStackTrace(); StringBuffer sb = new StringBuffer(); sb.append(e.toString()).append("\r\n"); for (StackTraceElement stackTraceElement : stackTrace) { sb.append("\tat ").append(stackTraceElement.getClassName()).append(".") .append(stackTraceElement.getMethodName()) .append("(").append(stackTraceElement.getFileName()).append(":").append(stackTraceElement.getLineNumber()) .append(")\r\n"); } return sb.toString(); } }
可以自建异常类,手动抛出异常,@ExceptionHandler也可捕获