Java接口响应封装类
Web开发中,前后分离是个趋势,现在大部分公司研发部门已经在走前后分离的路子了,前后分离开发各司其职能够有效的提高工作效率和开发质量。
REST接口会返回各种各样的数据,如果对接口的格式不加约束,很容易造成混乱。
在实际项目中,一般会把结果放在一个封装类中,封装类中包含http状态值,状态消息,以及实际的数据。
个人总结一下工作中用到的接口响应类。😃
- 状态枚举,接口响应状态码、消息,统一在此枚举类中定义,方便阅读、修改。
/**
* 响应状态码枚举
* @author liuyang
* 2020-01-13
*/
public enum CodeEnum {
SUCCESS(0, "成功"),
FAIL(1, "失败"),
;
private final Integer code;
private final String msg;
// 省略枚举构造方法、get、set方法
}
- 数据响应基类,方便以后扩展子类,也可用于增、删、改相关接口响应。
/**
* 响应数据基类
* @author liuyang
* 2020-01-13
*/
public class BaseResponse {
/**
* 状态码
*/
private Integer code;
/**
* 响应消息
*/
private String msg;
protected BaseResponse() {}
protected BaseResponse(CodeEnum code) {
this.code = code.getCode();
this.msg = code.getMsg();
}
// 省略get/set方法
}
- 响应数据体,继承自 BaseResponse 类,增加了 范型 属性,方便响应各种数据。
/**
* 响应数据体
* @author liuyang
* 2020-01-13
*/
public class ResponseData<T> extends BaseResponse {
/**
* 数据
*/
private T data;
private ResponseData(CodeEnum code) {
super(code);
}
private ResponseData(CodeEnum code, T data) {
super(code);
this.data = data;
}
/**
* 对外开放基础响应体已供调用,可用于增、删、改接口操作
*/
public static BaseResponse out(CodeEnum code) {
return new BaseResponse(code);
}
/**
* 对外开放数据响应体已供调用,可用于查询数据实用,引用了范型设计,支持各种数据类型
*/
public static <T> ResponseData<T> out(CodeEnum code, T data) {
return new ResponseData<>(code, data);
}
// 省略get/set方法
}
以上三个类足可以满足日常开发,顺带说一句,CodeEnum枚举类也可用于定义处于业务异常逻辑,比如:抛出用户不存在的异常,然后配合Spring MVC的 @ControllerAdvice注解,统一响应异常信息。(如果不明白,可在评论区说明,可以考虑再出一篇针对异常处理的文章)
进入测试------------------------
- 基础响应,此处模拟删除
@GetMapping("/user/del/{userId}")
public BaseResponse delUser(@PathVariable Integer userId) {
return ResponseData.out(CodeEnum.FAIL);
}
访问:localhost:8080/user/del/1
响应:
{
"code": 1,
"msg": "失败"
}
- 数据体响应,此处模拟用户列表
@GetMapping("/user-info")
public ResponseData<List<String>> userInfo() {
List<String> list = new ArrayList<>();
list.add(UUID.randomUUID().toString());
list.add(UUID.randomUUID().toString());
list.add(UUID.randomUUID().toString());
list.add(UUID.randomUUID().toString());
return ResponseData.out(CodeEnum.SUCCESS, list);
}
访问:localhost:8080/user-info
响应:
{
"code": 0,
"msg": "成功",
"data": [
"003252cf-3361-43c4-8fdc-b9091f83ea05",
"6320cd96-ae04-4885-ac78-76241f19ac95",
"34cdd394-97d4-4e7d-993f-e4688b86d0e0",
"bd293a9e-465b-4796-b8fa-17fc37de9bf7"
]
}
以上,测试成功。
PS:可在此基础上加入一些符合自己需要的属性,比如:响应时间戳、响应标识等等…
本文介绍了Java接口响应封装的重要性,通常包括HTTP状态值、状态消息和实际数据。提供了状态枚举、数据响应基类和具体响应数据体的示例,以满足日常开发需求。并提及CodeEnum枚举类在业务异常处理中的应用,结合Spring MVC的@ControllerAdvice进行统一异常响应。

5666

被折叠的 条评论
为什么被折叠?



