6.4 KiB
6.4 KiB
自定义restful接口响应体
RestResponse
作用:响应体载体,响应内容都在此对象中存储,此类定义MSG枚举消息体
@Data
@Accessors(chain = true)
@ToString
@NoArgsConstructor
public class RestResponse<T> implements Serializable {
private static boolean showError = true;
public enum MSG {
// 成功
SUCCESS(1, "SUCCESS"),
// 失败
FAILURE(0, "FAILURE"),
// 参数为空
NULL_PARAM(10000, "参数为空"),
// 对象为空
NULL_OBJ(10001, "对象为空"),
// 有数据为空
NO_DATA_BASE_EXISTS(10002, "数据在库中为空"),
// 参数未找到
NO_EXISTS_PARAM(10003, "参数未找到"),
// 数据不存在
NO_DATA_EXISTS(10004, "数据不存在"),
// 分页参数为空
NULL_PAGE_PARAM(10005, "分页参数为空"),
// 参数验证失败
PARAM_VALIDATION_FAILURE(10006, "参数验证未通过"),
// 参数不一致
PARAM_NOT_EQUAL(10007, "执行修改操作异常,参数id不一致"),
// 参数验证失败
DATA_EXISTS(10008, "数据已存在"),
// 参数值不符合规范
PARAM_VALUE_ERROR(11000, "参数值不符合规范");
int code;
String msg;
public int getCode() {
return code;
}
public String getMsg() {
return msg;
}
public void setCode(int code) {
this.code = code;
}
public void setMsg(String msg) {
this.msg = msg;
}
MSG(int code, String msg) {
this.code = code;
this.msg = msg;
}
}
private int code;
private String msg;
@JsonIgnoreProperties(value = {"hibernateLazyInitializer", "handler"})
private T data;
public RestResponse(MSG msg) {
this.code = msg.code;
this.msg = msg.msg;
}
/**
* 通过预设错误码和自定义错误信息创建
* @param code 错误码
* @param msg 错误信息
*/
private RestResponse(int code, String msg) {
this.code = code;
this.msg = msg;
}
public RestResponse(T obj) {
this.code = MSG.SUCCESS.code;
this.msg = MSG.SUCCESS.msg;
this.data = obj;
}
public RestResponse(MSG msg, T obj) {
this.code = msg.code;
this.msg = msg.msg;
this.data = obj;
}
public RestResponse(int code,String msg, T obj) {
this.code = code;
this.msg = msg;
this.data = obj;
}
public static RestResponse<Void> success() {
return new RestResponse<>(MSG.SUCCESS);
}
public static <T> RestResponse<T> success(T obj) {
return new RestResponse<>(MSG.SUCCESS, obj);
}
public static RestResponse<Void> success(int code, String msg) {
return new RestResponse<>(code, msg);
}
public static <T> RestResponse<T> success(T obj,String msg) {
return new RestResponse<>(MSG.SUCCESS.code,msg, obj);
}
public static RestResponse<Void> failure() {
return new RestResponse<>(MSG.FAILURE);
}
public static RestResponse<Void> failure(int code, String msg) {
return new RestResponse<>(code, msg);
}
public static RestResponse<Void> failure(MSG e) {
return new RestResponse<>(e.getCode(), e.getMsg());
}
public static RestResponse<Void> failure(MyException e) {
return new RestResponse<>(e.getCode(), e.getMsg());
}
public static <T> RestResponse<T> failure(T obj) {
return new RestResponse<>(MSG.FAILURE, obj);
}
/**
* 分页信息
* @param content 内容列表
* @param page 当前页数
* @param size 每页数据量
* @param total 数据总量
* @param totalPage 总页数
* @return res
*/
public static <T> RestResponse<PageResult<T>> pageList(List<T> content, long page, long size, long total, long totalPage) {
PageResult<T> pr = new PageResult<>(content, page, total, size, totalPage);
return new RestResponse<>(MSG.SUCCESS, pr);
}
/**
* 分页信息
* @param content 内容列表
* @param total 数据总量
* @return res
*/
public static <T> RestResponse<PageResult<T>> simplePageList(List<T> content, long total) {
PageResult<T> pr = new PageResult<>(content, total);
return new RestResponse<>(MSG.SUCCESS, pr);
}
}
PageResult
作用:分页查询响应体载体
@Data
@Builder
@NoArgsConstructor
@Accessors(chain = true)
@ApiModel("分页返回对象")
public class PageResult<T> implements Serializable {
private static final long serialVersionUID = 1402394526521183854L;
@ApiModelProperty("主题内容")
@JsonIgnoreProperties(value = {"hibernateLazyInitializer", "handler"})
private List<T> content;
@ApiModelProperty("当前页")
private long page;
@ApiModelProperty("每页数量")
private long size;
@ApiModelProperty("总数量")
private long total;
@ApiModelProperty("总页数")
private long totalPage;
public PageResult(List<T> content,
long page,
long size,
long total,
long totalPage){
this.content=content;
this.page=page;
this.size=size;
this.totalPage=totalPage;
this.total=total;
}
public PageResult(List<T> content,
long total){
this.content=content;
this.total=total;
}
}
MyException
作用:自定义异常类
@Data
@NoArgsConstructor
@Accessors(chain = true)
@Builder
public class MyException extends RuntimeException {
//错误码
private Integer code;
//错误信息
private String msg;
/**
* 自定义异常信息
*/
public MyException(Integer code, String msg) {
super(msg);
this.code = code;
this.msg = msg;
}
/**
* 响应类异常信息
*/
public MyException(RestResponse.MSG msg) {
super(msg.getMsg());
this.code=msg.getCode();
this.msg=msg.getMsg();
}
public MyException append(String msg){
this.msg+=msg;
return this;
}
public MyException before(String msg){
this.msg=msg+this.msg;
return this;
}
}