java统一返回
前言
在我们java平常的开发中,比较重要的一点就是对于接口的返回值的定义,因为基本大部分的api接口都需要一个统一的返回,这样调用方就比较好处理,逻辑也清晰,所以设计一个统一的返回就比较重要了
返回值的构成
我看了一些api也基本差不多,大致都有这么几种构成
code
code一般用来表示接口的调用情况,调用方可以根据code表判断这个接口的调用情况,
例如0 可以标识成功,1可以表示报错,2可以表示未登录,3可以表示没有权限…
自己定义规则就行
msg
msg表示提示信息
可以是成功的消息success
新增成功
删除成功
也可以是失败的原因,error
没有权限
参数错误
等等
data
一些查询接口调用会有一个返回数据,用data来表示,工具类采用泛型
代码实现
- 因为是工具方法,所有把所有的构造方法的私有化了,使用静态方法调用更方便
- 使用lombok让代码更简洁
@Data
- 开启链式编程更方便
@Accessors(chain = true)
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 接口统一返回
*
* @author yanhuo
* @since 2022/4/23
*/
@Data
@Accessors(chain = true)
public class Re<T> {
/**
* 返回状态码
*/
private int code;
/**
* 提示信息
*/
private String msg;
/**
* 返回数据
*/
private T data;
private Re() {
}
private Re(T data) {
this.data = data;
}
private Re(int code, String msg) {
this.code = code;
this.msg = msg;
}
private Re(int code, String msg, T data) {
this.code = code;
this.msg = msg;
this.data = data;
}
// 没有返回数据,Re.ok()
public static Re ok() {
return new Re(0, "sucess");
}
// 有返回数据,Re.ok(data)
public static <T> Re<T> ok(T data) {
return new Re<T>(0, sucess, data);
}
// 只有提示信息,Re.ok("新增/修改成功")
public static Re ok(String msg) {
return new Re(0, msg);
}
// Re.error()
public static Re error() {
return new Re(1, "error");
}
// Re.error("请重试")
public static Re error(String msg) {
return new Re(1, msg);
}
}
返回后的json
下面是几种返回的json数据展示
{
"code": 0,
"msg": "success",
"data": null
}
{
"code": 0,
"msg": "添加成功",
"data": null
}
{
"code": 0,
"msg": "success",
"data": {"这是一条数据"}
}
{
"code": 1001,
"msg": "error",
"data": null
}
{
"code": 1001,
"msg": "参数不正确",
"data": null
}
结语
写的比较简单,基本使用差不多,如果有更为复杂的交互,在现有基础上可以继续升级