java 模板接口_Java接口统一样式返回模板

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;

}

}

可以根据自己项目的需求进行方法、属性等内容的扩展。

测试实例

这里,我们使用UserController中的save()方法进行测试,查看其添加了统一样式之后的效果,先看下该方法:

/**

* 用户保存

* @return 返回保存的用户信息

*/

@PostMapping(value = "save")

@ApiOperation(value = "保存用户信息", notes = "保存用户的详细信息")

public ResultData save(@RequestBody User user) {

try {

User savedUser = null;

if (user != null) {

if (StringUtils.isEmpty(user.getUserId())) {

user.setUserId(UUID.randomUUID().toString());

}

savedUser = userService.save(user);

// int i = 1/0; // 测试异常现象时放开这行代码

}

return ResultData.success(savedUser);

} catch (Exception e) {

e.printStackTrace();

return ResultData.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

}

到这里,基本上关于接口样式的模板也就介绍完了,如有不准确的地方,请留言多多指教。

微信公众号: 源码湾

欢迎关注本人微信公众号: 源码湾。 本公众号将不定期进行相关源码及相关开发技术的分享,共同成长,共同进步~

Blog:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值