首页 专题 文章 代码 归档

[SpringBoot]统一Json数据返回构造器

1. 前言

在Restful风格中,返回json数据,肯定要一个可以统一返回json的一个类

这样前端接收时,也可以恰好的判断错误或其他东西!

这里是网上找到的一个现成的代码,共有三个类

一:返回的类的类型:AppResult

二:上诉类型的构造器:AppResultBuilder

三:返回的各类状态码枚举:ResultCode

2. 具体代码(Java)

2.1. AppResult

package com.misiai.work_blog.util.res;

public class AppResult<T> {

    private int code;
    private String msg;
    private T data;// 数据

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }

}

2.2. AppResultBuilder

package com.misiai.work_blog.util.res;

public class AppResultBuilder {

    //成功,不返回具体数据
    public static <T> AppResult<T> successNoData(ResultCode code) {
        AppResult<T> result = new AppResult<T>();
        result.setCode(code.getCode());
        result.setMsg(code.getMsg());
        return result;
    }

    //成功,返回数据
    public static <T> AppResult<T> success(T t, ResultCode code) {
        AppResult<T> result = new AppResult<T>();
        result.setCode(code.getCode());
        result.setMsg(code.getMsg());
        result.setData(t);
        return result;
    }

    //失败,返回失败信息
    public static <T> AppResult<T> fail(ResultCode code) {
        AppResult<T> result = new AppResult<T>();
        result.setCode(code.getCode());
        result.setMsg(code.getMsg());
        return result;
    }

}

2.3. ResultCode

public enum ResultCode {
    /* 成功状态码 */
    SUCCESS(1000, "成功"),

    /* 参数错误:10001-19999 */
    PARAM_IS_INVALID(10001, "参数无效"),
    PARAM_IS_BLANK(10002, "参数为空"),
    PARAM_TYPE_BIND_ERROR(10003, "参数类型错误"),
    PARAM_NOT_COMPLETE(10004, "参数缺失"),

    /* 用户错误:20001-29999*/
    USER_NOT_LOGGED_IN(20001, "用户未登录"),
    USER_LOGIN_ERROR(20002, "账号不存在或密码错误"),
    USER_ACCOUNT_FORBIDDEN(20003, "账号已被禁用"),
    USER_NOT_EXIST(20004, "用户不存在"),
    USER_HAS_EXISTED(20005, "用户已存在"),
    USER_PASSWORD_ERROR(20006, "用户密码错误"),
    USER_PASSWORD_MODIFY_SUCCESS(20007, "修改密码成功"),
    USER_PASSWORD_MODIFY_FAIL(20008, "修改密码失败"),
    USER_LOGIN_SUCCESS(20009, "登录成功"),
    USER_LOGIN_FAIL(20010, "登录失败"),
    USER_REGISTER_SUCCESS(20011, "注册成功"),
    USER_REGISTER_FAIL(20012, "注册失败"),

    /* 权限错误:70001-79999 */
    PERMISSION_NO_ACCESS(70001, "无访问权限");

    private Integer code;
    private String msg;

    ResultCode(Integer code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    public Integer getCode() {
        return code;
    }

    public String getMsg() {
        return msg;
    }
}

3. 具体代码(Kotlin)

3.1. AppResult

class AppResult<T> {
    var code = 0
    var msg: String? = null
    var data // 数据
            : T? = null
        private set

    fun setData(data: T) {
        this.data = data
    }
}

3.2. AppResultBuilder

object AppResultBuilder {
    //成功,不返回具体数据
    fun <T> successNoData(code: ResultCode): AppResult<T> {
        val result = AppResult<T>()
        result.code = code.code
        result.msg = code.msg
        return result
    }

    //成功,返回数据
    fun <T> success(t: T, code: ResultCode): AppResult<T> {
        val result = AppResult<T>()
        result.code = code.code
        result.msg = code.msg
        result.setData(t)
        return result
    }

    //失败,返回失败信息
    fun <T> fail(code: ResultCode): AppResult<T> {
        val result = AppResult<T>()
        result.code = code.code
        result.msg = code.msg
        return result
    }

    //错误,返回错误信息
    fun <T> error(code: Int, msg: String): AppResult<T> {
        val result = AppResult<T>()
        result.code = code
        result.msg = msg
        return result
    }
}

3.3. ResultCode

//状态码
public enum ResultCode {
    /* 成功状态码 */
    SUCCESS(0, "成功"),

    /* 参数错误:10001-19999 */
    PARAM_IS_INVALID(10001, "参数无效"),
    PARAM_IS_BLANK(10002, "参数为空"),
    PARAM_TYPE_BIND_ERROR(10003, "参数类型错误"),
    PARAM_NOT_COMPLETE(10004, "参数缺失"),

    /* 用户错误:20001-29999*/
    USER_NOT_LOGGED_IN(20001, "用户未登录"),
    USER_LOGIN_ERROR(20002, "账号不存在或密码错误"),
    USER_ACCOUNT_FORBIDDEN(20003, "账号已被禁用"),
    USER_NOT_EXIST(20004, "用户不存在"),
    USER_HAS_EXISTED(20005, "用户已存在"),
    USER_PASSWORD_ERROR(20006, "用户密码错误"),
    USER_PASSWORD_MODIFY_SUCCESS(20007, "修改密码成功"),
    USER_PASSWORD_MODIFY_FAIL(20008, "修改密码失败"),
    USER_LOGIN_SUCCESS(20009, "登录成功"),
    USER_LOGIN_FAIL(20010, "登录失败"),

    /* 权限错误:70001-79999 */
    PERMISSION_NO_ACCESS(70001, "无访问权限");

    private final Integer code;
    private final String msg;

    ResultCode(Integer code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    public Integer getCode() {
        return code;
    }

    public String getMsg() {
        return msg;
    }
}
此文阅读完毕,您可以:分享
二维码图片 扫描关注我们哟