后端數據都是以json的形式給前端返回,一般都是通過@ResponseBody來進行返回.每次返回都要重新格式化一下json的格式.如果接受請求的方法多了,那么這種返回方式無疑是效率很低的.那么就需要一個類來吧這些返回的格式統一管理起來.
可以定義一個Result類,用來專門管理返回數據的:
@Data public class Result<T> { private int code; //返回狀態碼 private String msg; //返回的message private T data; //返回的數據 private Result(T data) { this.code = 0; this.msg = "success"; this.data = data; } private Result(CodeMsg msg) { if (msg == null) { return; } this.code = msg.getCode(); this.msg = msg.getMsg(); } /** * 失敗的時候調用 */
public static <T> Result<T> error(CodeMsg msg) { return new Result<T>(msg); } /** *成功的時候調用 */
public static <T> Result<T> success(T data) { return new Result<T>(data); } }
其中CodeMsg封裝了具體的錯誤信息:
@Data public class CodeMsg { private int code; private String msg; private CodeMsg(int code, String msg) { this.code = code; this.msg = msg; } public CodeMsg fillArgs(Object... args) { //帶自定義格式化參數的錯誤信息 int code = this.code; String message = String.format(this.msg, args); return new CodeMsg(code,message); } /** * 通用異常 */
public static CodeMsg SUCCESS = new CodeMsg(0, "SUCESS"); public static CodeMsg SERVER_ERROR = new CodeMsg(500100, "服務端異常"); public static CodeMsg BIND_ERROR = new CodeMsg(500101, "參數校驗異常:%s"); /** * 登錄模塊5002XX */
public static final CodeMsg PASSWORD_EMPTY = new CodeMsg(500211, "密碼不能為空"); public static final CodeMsg MOBILE_EMPTY = new CodeMsg(500211, "手機號不能為空"); public static final CodeMsg MOBILE_ERROR = new CodeMsg(500211, "手機號格式錯誤"); public static final CodeMsg USER_NOT_EXITS = new CodeMsg(500211, "用戶不存在"); public static final CodeMsg PASSWORD_ERROR = new CodeMsg(500211, "密碼錯誤"); }
這樣在后端返回的時候,只需要給定CodeMsg里面的靜態常量就可以了.根據自己需要進行定義.
return Result.success(true);
return Result.error(CodeMsg.SERVER_ERROR)