统一结果返回、请求

该博客介绍了在前后端分离开发中如何统一JSON数据格式,以提高沟通效率。定义了RespBean作为响应数据模板,包含状态码、时间戳、提示信息和具体数据等字段,并提供了成功与失败的快捷返回方式。请求数据则使用ReqBean,包含时间戳、提示信息ID、请求来源、会话和数据项等字段,以适应不同类型的前端数据。
摘要由CSDN通过智能技术生成

在前后端分离开发中,我们前后端交互的内容都是json数据,为了规范我们之间的交互,我们就可以统一结果返回和请求的数据格式。以便我们交流。

统一结果:

@Data
public class RespBean implements Serializable {
​
    @ApiModelProperty(value = "状态码")
    private Integer code;
​
    @ApiModelProperty(value = "时间戳")
    private Date timestamp;
​
    @ApiModelProperty(value = "提示信息")
    private String msg;
​
    @ApiModelProperty(value = "具体数据")
    private Map<String,Object> data = new HashMap<String,Object>();
​
    //构造方法私有化
    private RespBean(){
​
    }
​
    //成功方法
    public static RespBean success() {
        RespBean respBean = new RespBean();
        respBean.setCode(RespCode.SUCCESS);
        respBean.setTimestamp(new Date());
        respBean.setMsg("成功了");
        return respBean;
    }
​
    //失败方法
    public static RespBean error() {
        RespBean respBean = new RespBean();
        respBean.setCode(RespCode.ERROR);
        respBean.setTimestamp(new Date());
        respBean.setMsg("失败了");
        return respBean;
    }

在这里采用返回this的形式,可以使得我们继续添加别的属性,在data属性中采用map的数据类型,可以将我们的数据以键值对的形式展示给前端。
//设置提示信息
    public RespBean setMsg(String msg) {
        this.msg = msg;
        return this;
    }
​
    //设置状态码
    public RespBean setCode(Integer code) {
        this.code = code;
        return this;
    }
​
    //设置时间戳
    public RespBean setTimestamp(Date date){
        this.timestamp = date;
        return this;
    }
    //设置返回数据
    public RespBean setData(String key, Object value) {
        this.data.put(key, value);
        return this;
    }
​
    //设置返回数据
    public RespBean setData(Map<String,Object> map) {
        this.data = map;
        return this;
    }
}
 
样式:

{
    "code": 2000,
    "timestamp": "2021-10-30 23:36:07",
    "msg": "成功了",
    "data": {
        "navigatePages": 8,
        "navigateFirstPage": 1,
        "total": 6,
        "pages": 1,
        "navigatepageNums": [
            1
        ],
        "size": 6,
        "prePage": 0,
        "nextPage": 0,
        "pageSize": 6,
        "navigateLastPage": 1,
        "list": [
            {
                "report_id": 73,
                "report_type": "磁盘IO分布表",
                "report_data": "{\"写\": 900, \"读\": 1200, \"型号\": \"MZ-77E500B\", \"磁盘类型\": \"SAS\"}",
                "report_time": "2021-10-11 00:00:00",
                "create_time": "2021-10-29 14:26:14",
                "modify_time": "2021-10-29 14:26:14"
            }
        ],
        "pageNum": 1
    }
}

统一请求

@Data
@AllArgsConstructor
public class ReqBean implements Serializable {
    
    @ApiModelProperty(value = "时间戳")
    private Date timestamp;
​
    @ApiModelProperty(value = "提示信息id")
    private String msgid;
​
    @ApiModelProperty(value = "请求来源")
    private String source;
​
    @ApiModelProperty(value = "会话")
    private String session;
​
    //使用Object类型去接受,可以适配前端所有数据类型,再在service去做具体是数据转换。
    @ApiModelProperty(value = "数据项")
    private Object data;
​
    public ReqBean() {
    }
}

形式:

{
    "data": [
        {
            "report_type": "磁盘IO分布表",
            "conditions":{"写":900},
            "starttime":"2021-10-10 00:00:00",
            "overtime":"2021-10-13 00:00:00",
            "pageSize":100,
            "pageNum":1
        }
       
    ],
    "msgid": "string",
    "session": "string",
    "source": "string",
    "timestamp": "2021-10-27 12:52:33.797Z"
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值