在我们日常开发中,处理数据之后,给客户端返回一个优美的统一结果,能够让客户端很容易判断数据交给服务端处理的结果。
下面我们基于Springboot,使用枚举+实体类的形式,打造一个优雅的统一返回结果工具!
-
引入pom包(lombok)
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
-
编写枚举类Renum.java
import lombok.Getter;
/**
* @author qiemengyan
*/
@Getter
public enum Renum {
/**
* 成功响应
*/
SUCCESS(true,200,"成功"),
/**
* 机器人未上线
*/
ROBOT_OFF(false,1001,"该机器人不存在或已下线,数据接收失败"),
/**
* 类型为空
*/
TYPE_NULL_ERROR(false,1002,"类型不能为空"),
/**
* 传输过程异常
*/
NULL_ERROR(false,1003,"服务程序数据传输过程异常,请联系管理员"),
/**
* 未知的数据类型
*/
UNKNOWN_TYPE(false,1004,"类型不识别"),
/**
* 运行时异常处理
*/
RUN_ERROR(false,1005,"服务运行出错,请联系管理员"),
/**
* 响应是否成功
*/
private final Boolean success;
/**
* 响应状态码
*/
private final Integer code;
/**
* 响应信息
*/
private final String message;
Renum(Boolean success, int code, String messsage) {
this.success=success;
this.code=code;
this.message=messsage;
}
}
-
编写实体类ResultClass.java
import lombok.Data;
/**
* 返回结果的实体类(升级版,暂未使用)
*
* @author qiemengyan
*/
@Data
public class ResultClass<T> {
private Boolean success;
private Integer code;
private String message;
private T data;
/**
* 正常响应,无返回数据
*/
public ResultClass() {
Renum renum = Renum.SUCCESS;
this.message = renum.getMessage();
this.code = renum.getCode();
this.success = renum.getSuccess();
}
/**
* 正常响应,加返回数据
*
* @param data 数据
*/
public ResultClass(T data) {
Renum renum = Renum.SUCCESS;
this.message = renum.getMessage();
this.code = renum.getCode();
this.success = renum.getSuccess();
this.data = data;
}
/**
* 统一异常处理
*
* @param renum 枚举类
*/
public ResultClass(Renum renum) {
this.message = renum.getMessage();
this.code = renum.getCode();
this.success = renum.getSuccess();
}
@Override
public String toString() {
return "{" +
"success=" + success +
", code=" + code +
", message='" + message + '\'' +
", data=" + data +
"}";
}
}
-
使用
客户端收到的结果如下图: