Java接口统一样式返回模板简介
这篇文章主要介绍了Java接口统一样式返回模板简介,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
背景
在进行接口开发时,一般需要一个固定的返回样式,成功和失败的时候,都按照这种格式来进行统一的返回,这样,在与其他人进行接口之间的联调时不会显得很杂乱无章。而这种固定的格式如果放在Java的每个接口单独处理时,又会在接口开发时很繁琐,所以这个时候可以采用封装一个实体类,统一返回固定模板格式的内容。
封装模板
先看一下没有封装之前,接口代码和返回格式:
/**
*用户修改
*@return返回修改的用户信息
*/
@PutMapping(value="update")
publicUserupdate(@RequestBodyUseruser){
UserupdatedUser=userService.update(user);
returnupdatedUser;
}
{
"userId":"0d67cfa7-f6a1-46b6-8e5a-b605afc98c44",
"username":"ww",
"password":"123456",
"status":0,
"createTime":310863886132307,
"updateTime":312955781619836
}
很显然,这种原始的内容返回虽然很直观,但是如果在发生错误的时候,那么接口的返回就比较的不自然了,甚至会将底层的错误对外暴露,下面介绍下一个简单的统一接口样式的封装:
枚举类ResponseCode:定义返回码code及提示信息msg
我们先定义一个枚举类,用于封装返回的code码和提示信息msg,当然也可以封装其他的信息,比如状态status,这个可以根据自己的项目自由选择。
packagecom.server.config;
/**
*@Packagecom.server.config
*@Authorwuzy
*@Date2019/10/3014:47
*@VersionV1.0
*@Description:code码封装枚举类
*/
publicenumResponseCode{
/**成功*/
SUCCESS("200","成功"),
/**操作失败*/
ERROR("500","操作失败");
privateResponseCode(Stringvalue,Stringmsg){
this.val=value;
this.msg=msg;
}
publicStringval(){
returnval;
}
publicStringmsg(){
returnmsg;
}
privateStringval;
privateStringmsg;
}
封装类ResultData:定义code、msg及数据data
再定义一个封装类ResultData,该类用于接口返回时的统一格式封装,这里,我们定义了三个属性,分别为状态码code,提示消息msg以及返回的数据data。下面是具体的代码:
packagecom.server.config;
importlombok.Data;
/**
*@Packagecom.server.config
*@Authorwuzy
*@Date2019/10/3014:38
*@VersionV1.0
*@Description:返回样式封装
*/
@Data
publicclassResultData{
privateStringcode;
privateStringmsg;
privateObjectdata;
publicstaticResultDatasuccess(Objectdata){
returnresultData(ResponseCode.SUCCESS.val(),ResponseCode.SUCCESS.msg(),data);
}
publicstaticResultDatasuccess(Objectdata,Stringmsg){
returnresultData(ResponseCode.SUCCESS.val(),msg,data);
}
publicstaticResultDatafail(Stringcode,Stringmsg){
returnresultData(code,msg,null);
}
publicstaticResultDatafail(Stringcode,Stringmsg,Objectdata){
returnresultData(code,msg,data);
}
privatestaticResultDataresultData(Stringcode,Stringmsg,Objectdata){
ResultDataresultData=newResultData();
resultData.setCode(code);
resultData.setMsg(msg);
resultData.setData(data);
returnresultData;
}
}
可以根据自己项目的需求进行方法、属性等内容的扩展。
测试实例
这里,我们使用UserController中的save()方法进行测试,查看其添加了统一样式之后的效果,先看下该方法:
/**
*用户保存
*@return返回保存的用户信息
*/
@PostMapping(value="save")
@ApiOperation(value="保存用户信息",notes="保存用户的详细信息")
publicResultDatasave(@RequestBodyUseruser){
try{
UsersavedUser=null;
if(user!=null){
if(StringUtils.isEmpty(user.getUserId())){
user.setUserId(UUID.randomUUID().toString());
}
savedUser=userService.save(user);
//inti=1/0;//测试异常现象时放开这行代码
}
returnResultData.success(savedUser);
}catch(Exceptione){
e.printStackTrace();
returnResultData.fail(ResponseCode.ERROR.val(),"用户保存过程中发生异常,请检查!");
}
}
先看一下成功(也就是调用success方法)的情况
{
"code":"200",
"msg":"成功",
"data":{
"userId":"0d67cfa7-f6a1-46b6-8e5a-b605afc98c44",
"username":"ww",
"password":"123456",
"status":0,
"createTime":310863886132307,
"updateTime":312955781619836
}
}
再看一下发生异常或者保存失败时候的错误提示信息,这里使用1/0的异常来测试,结果如下:
{
"code":"500",
"msg":"用户保存过程中发生异常,请检查!",
"data":null
}
到这里,基本上关于接口样式的模板也就介绍完了,如有不准确的地方,请留言多多指教。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。