前后端分离开发,后端返回前端json数据

现阶段越来越多的项目采用前后端的分离开发模式,前端请求后台接口获取数据,后台返回结果,这时我们往往会定义好一种固定的数据格式来实现数据的传递,下面就本人在开发中常用的数据对象来做简单说明

我们在开发中定义后台接口时,后台返回数据可以定义为Result<T>,其中泛型T根据接口获取的不同数据根据情况而定,其中code为请求接口的状态码,msg为该次请求结果的提示信息(codemsg可一一对应,封装为枚举对象),data为返回数据,具体的代码如下

package com.lzycug.mail.pojo;

import java.io.Serializable;

/**
 * 后台返回前端数据对象
 *
 * @author lzycug
 * @param <T>
 * @since 2020-07-11
 */
public class Result<T> implements Serializable {
    private static final long serialVersionUID = -7264375751490927423L;

    /**
     * 状态码
     */
    private String code = "0";

    /**
     * 信息
     */
    private String msg;

    /**
     * 返回数据
     */
    private T data;

    public <T> Result() {
    }

    public Result(String code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    public Result(String code, String msg, T data) {
        this.code = code;
        this.msg = msg;
        this.data = data;
    }

    public static Result ok() {
        return new Result(ResultCode.OK.getCode(), ResultCode.OK.getMsg());
    }

    public static <T> Result ok(T data) {
        return new Result(ResultCode.OK.getCode(), ResultCode.OK.getMsg(), data);
    }

    public static Result error() {
        return new Result(ResultCode.ERROR.getCode(), ResultCode.ERROR.getMsg());
    }

    public static Result error(String code) {
        return new Result(code, ResultCode.getMsgByCode(code));
    }

    public static Result error(String code, String msg) {
        return new Result(code, msg);
    }

    public static <T> Result error(String code, T data) {
        return new Result(code, ResultCode.getMsgByCode(code), data);
    }

    public String getCode() {
        return code;
    }

    public void setCode(String 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;
    }
}

codemsg的对应枚举对象

package com.lzycug.mail.pojo;

import org.apache.commons.lang3.StringUtils;

/**
 * 返回结果枚举对象
 *
 * @author lzycug
 * @since 2020-07-11
 */
public enum ResultCode {
    // 根据业务需要补充相应的状态码及对应的提示信息,此处作简单罗列
    OK("0", "操作成功"),
    NOPARAMETER("1001", "参数为空"),
    NOAUTH("1002", "暂无接口调用权限"),
    ERROR("-1", "系统内部异常");
    
    private String code;

    private String msg;

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

    /**
     * 根据code值获取对应的消息
     *
     * @param code 状态码
     * @return 消息
     */
    public static String getMsgByCode(String code) {
        String msg = StringUtils.EMPTY;
        ResultCode[] resultCodes = values();
        for (ResultCode resultCode : resultCodes) {
            if (StringUtils.equals(code, resultCode.code)) {
                msg = resultCode.msg;
            }
        }
        return msg;
    }

    public String getCode() {
        return code;
    }

    public String getMsg() {
        return msg;
    }
}

上面只是一个实例,根据具体的业务需要,可增加返回的字段与前端,简单案例可参考https://github.com/Lzycug/stepRepository.git下的mail项目

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值