1. 程式人生 > >Restful型別的返回結果的封裝

Restful型別的返回結果的封裝

之所以需要對結果進行固定格式的封裝,是為了讓前端更好的接受和處理結果.對資料進行展示.

只需要進行兩部操作就夠了,封裝起來很簡單.

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