这篇文章主要介绍了Java接口统一样式返回模板简介,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
背景
在进行接口开发时,一般需要一个固定的返回样式,成功和失败的时候,都按照这种格式来进行统一的返回,这样,在与其他人进行接口之间的联调时不会显得很杂乱无章。而这种固定的格式如果放在Java的每个接口单独处理时,又会在接口开发时很繁琐,所以这个时候可以采用封装一个实体类,统一返回固定模板格式的内容。
封装模板
先看一下没有封装之前,接口代码和返回格式:
/** * 用户修改 * @return 返回修改的用户信息 */ @PutMapping(value = "update") public User update(@RequestBody User user) { User updatedUser = userService.update(user); return updatedUser; }
{ "userId": "0d67cfa7-f6a1-46b6-8e5a-b605afc98c44", "username": "ww", "password": "123456", "status": 0, "createTime": 310863886132307, "updateTime": 312955781619836 }
很显然,这种原始的内容返回虽然很直观,但是如果在发生错误的时候,那么接口的返回就比较的不自然了,甚至会将底层的错误对外暴露,下面介绍下一个简单的统一接口样式的封装:
枚举类ResponseCode:定义返回码code及提示信息msg
我们先定义一个枚举类,用于封装返回的code码和提示信息msg,当然也可以封装其他的信息,比如状态status,这个可以根据自己的项目自由选择。
package com.server.config; /** * @Package com.server.config * @Author wuzy * @Date 2019/10/30 14:47 * @Version V1.0 * @Description: code码封装枚举类 */ public enum ResponseCode { /** 成功 */ SUCCESS("200", "成功"), /** 操作失败 */ ERROR("500", "操作失败"); private ResponseCode(String value, String msg){ this.val = value; this.msg = msg; } public String val() { return val; } public String msg() { return msg; } private String val; private String msg; }
封装类ResultData: 定义code、msg及数据data
再定义一个封装类ResultData,该类用于接口返回时的统一格式封装,这里,我们定义了三个属性,分别为状态码code,提示消息msg以及返回的数据data。下面是具体的代码:
package com.server.config; import lombok.Data; /** * @Package com.server.config * @Author wuzy * @Date 2019/10/30 14:38 * @Version V1.0 * @Description: 返回样式封装 */ @Data public class ResultData { private String code; private String msg; private Object data; public static ResultData success(Object data) { return resultData(ResponseCode.SUCCESS.val(), ResponseCode.SUCCESS.msg(), data); } public static ResultData success(Object data, String msg) { return resultData(ResponseCode.SUCCESS.val(), msg, data); } public static ResultData fail(String code, String msg) { return resultData(code, msg, null); } public static ResultData fail(String code, String msg, Object data) { return resultData(code, msg, data); } private static ResultData resultData(String code, String msg, Object data) { ResultData resultData = new ResultData(); resultData.setCode(code); resultData.setMsg(msg); resultData.setData(data); return resultData; } }