Restful型別的返回結果的封裝
阿新 • • 發佈:2018-12-28
之所以需要對結果進行固定格式的封裝,是為了讓前端更好的接受和處理結果.對資料進行展示.
只需要進行兩部操作就夠了,封裝起來很簡單.
1.進行最終結果的封裝:
/** * 輸出結果的封裝 * 只要get不要set,進行更好的封裝 * @param <T> */ public class Result<T> { private int code; private String msg; private T data; private Result(T data){ this.code=0; this.msg="success"; this.data=data; } private Result(CodeMsg mg) { if (mg==null){ return; } this.code=mg.getCode(); this.msg=mg.getMsg(); } /** * 成功時 * @param <T> * @return */ public static <T> Result<T> success(T data){ return new Result<T>(data); } /** * 失敗 * @param <T> * @return */ public static <T> Result<T> fail(CodeMsg mg){ return new Result<T>(mg); } public int getCode() { return code; } public String getMsg() { return msg; } public T getData() { return data; } }
2.進行正確和錯誤返回結果的封裝
/** * 只要get不要set,進行更好的封裝 */ public class CodeMsg { private int code; private String msg; //通用的異常 public static CodeMsg SUCCESS=new CodeMsg(0,"success"); public static CodeMsg SERVER_ERROR=new CodeMsg(50000,"服務端異常"); public static CodeMsg PASSWORD_EMPTY=new CodeMsg(50001,"密碼不能為空"); public static CodeMsg MOBILE_EMPTY=new CodeMsg(50002,"手機號不能為空"); public static CodeMsg MOBILE_ERROR=new CodeMsg(50003,"手機號格式錯誤"); public static CodeMsg NO_USER = new CodeMsg(50004,"使用者不存在"); public static CodeMsg PASSWORD_ERROR = new CodeMsg(50005,"密碼錯誤"); //登陸模組異常....60000 //商品模組...70000 //訂單...80000 public CodeMsg fillArgs(Object...args){ int code=this.code; String message=String.format(this.msg,args); return new CodeMsg(code,message); } private CodeMsg(int code, String msg) { this.code=code; this.msg=msg; } public int getCode() { return code; } public String getMsg() { return msg; } //注意需要重寫toString 方法,不然到前端頁面是一個物件的地址.... @Override public String toString() { return "CodeMsg{" + "code=" + code + ", msg='" + msg + '\'' + '}'; } }
3.示例
成功的時候,使用success方法,返回任何你想要返回的物件.
Result<Object> 可以使用具體的泛型...
public Result<Object> getMiaoshaPath(MiaoshaUser user, ){
String md5=miaoshaService.createPath(user,goodsIs);
return Result.success(md5);
}
失敗時候: 返回具體的錯誤,需要提前定義好哦.
public Result<Object> miaoshaResult(){
if(user==null){
return Result.fail(CodeMsg.NO_USER);
}
long orderId=miaoshaService.getMiaoshaResult(user.getId(),goodsId);
return Result.success(orderId);
}
就這麼簡單....
這樣就好了,只需要定義好錯誤碼就可以使用了
Java Framework,歡迎各位前來交流java相關
QQ群:965125360
推薦JVM的視訊:
深入理解Java虛擬機器(jvm效能調優+記憶體模型+虛擬機器原理)
https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.c9e51deb8seTn4&id=583526620411