Restful类型的返回结果的封装

版权声明:本文为博主原创文章,欢迎大家讨论,未经博主允许不得转载. https://blog.csdn.net/u010398771/article/details/84783355

之所以需要对结果进行固定格式的封装,是为了让前端更好的接受和处理结果.对数据进行展示.

只需要进行两部操作就够了,封装起来很简单.

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
 

猜你喜欢

转载自blog.csdn.net/u010398771/article/details/84783355
今日推荐