com.fengwenyi.api.result.ResultTemplate Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of api-result Show documentation
Show all versions of api-result Show documentation
一套RESTful风格API接口响应参数规范化的解决方案
package com.fengwenyi.api.result;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Map;
/**
* 结果模板
*
*
*
*
* 属性介绍:
*
*
*
* - {@code code} :结果码
* - {@code msg} :描述
* - {@code success} :成功标志
* - {@code header} :响应头
* - {@code body} :响应体
*
*
*
*
*
* 当 code(结果码)为 SUCCESS 时,表示成功。此时 success(成功标志)为 {@code true},表示成功。
*
*
*
* 反之,当 code(结果码)不为 SUCCESS 时,表示失败。此时 success(成功标志)为 {@code false},表示失败。
*
*
*
*
*
*
*
* 特注需要提醒的是,{@code success} 属性,默认是false,
* 如果你在返回的时候没有使用给定的 {@code success(...)} 方法。
* 那么,你需要手动修改值。
* 否则返回的值可能依旧是 {@code false}.
* 那么在做出判断时,使用该属性,可能不准确。
*
*
*
*
*
* 关于设计的说明:
*
*
*
* 这是顶层,不能再添加其他属性进行返回。
* 如果需要,解决方案:
* 如果是请求相关的,可以添加到 {@code header} 里面,这是一个 {@link Map}
* 如果是数据,必须保存到body里
*
*
*
*
* @author Erwin Feng
* @since 2.7.0
*/
public class ResultTemplate implements Serializable {
private static final long serialVersionUID = 2694678370842576448L;
/**
* 结果码
*/
private String code;
/**
* 描述
*/
private String msg;
/**
* 结果状态,{@code true}-成功;{@code false}-失败
*/
private Boolean success = Boolean.FALSE;
/**
* 结果头
*/
private ResultHeader header;
/**
* 结果体
*/
private T body;
/**
* 时间
*/
private LocalDateTime date = LocalDateTime.now();
/**
* 默认操作成功
*/
private static final Result SUCCESS = Result.Default.SUCCESS;
/**
* 默认操作失败
*/
private static final Result ERROR = Result.Default.ERROR;
/**
* 构造方法:无参数
*/
public ResultTemplate() {
}
/**
* 操作成功
*
* @param {@link Void}
* @return 响应封装类 {@link ResultTemplate}
*/
public static ResultTemplate success() {
return new ResultTemplate()
.setSuccess(Boolean.TRUE)
.setCode(SUCCESS.getCode())
.setMsg(SUCCESS.getMsg())
;
}
/**
* 操作成功
*
* @param body 响应体
* @param 响应体类型
* @return 响应封装类 {@link ResultTemplate}
*/
@SuppressWarnings("all")
public static ResultTemplate success(T body) {
return new ResultTemplate()
.setSuccess(Boolean.TRUE)
.setCode(SUCCESS.getCode())
.setMsg(SUCCESS.getMsg())
.setBody(body)
;
}
/**
* 操作失败
*
* @param {@link Void}
* @return 响应封装类 {@link ResultTemplate}
*/
public static ResultTemplate fail() {
return new ResultTemplate()
.setCode(ERROR.getCode())
.setMsg(ERROR.getMsg())
;
}
/**
* 操作失败
*
* @param msg 描述信息
* @param {@link Void}
* @return 响应封装类 {@link ResultTemplate}
*/
@SuppressWarnings("all")
public static ResultTemplate fail(String msg) {
msg = StringUtils.isBlank(msg) ? ERROR.getMsg() : msg;
return new ResultTemplate()
.setCode(ERROR.getCode())
.setMsg(msg)
;
}
/**
* 操作失败
*
* @param returnCode {@link Result}
* @param {@link Void}
* @return 响应封装类 {@link ResultTemplate}
*/
public static ResultTemplate fail(Result returnCode) {
return new ResultTemplate()
.setCode(returnCode.getCode())
.setMsg(returnCode.getMsg())
;
}
/**
* 操作失败
*
* @param returnCode {@link Result}
* @param msg 描述信息
* @param {@link Void}
* @return 响应封装类 {@link ResultTemplate}
*/
@SuppressWarnings("all")
public static ResultTemplate fail(Result returnCode, String msg) {
msg = StringUtils.isBlank(msg) ? returnCode.getMsg() : msg;
return new ResultTemplate()
.setCode(returnCode.getCode())
.setMsg(msg)
;
}
/**
* 操作失败
*
* @param code 返回码
* @param msg 描述信息
* @param {@link Void}
* @return 响应封装类 {@link ResultTemplate}
*/
@SuppressWarnings("all")
public static ResultTemplate fail(String code, String msg) {
return new ResultTemplate()
.setCode(code)
.setMsg(msg)
;
}
/**
* {@code code} 的get方法
*
* @return {@code code} 的值
*/
@SuppressWarnings("all")
public String getCode() {
return code;
}
/**
* {@code code} 的get方法
*
* @param code 响应码
* @return {@link ResultTemplate}
*/
private ResultTemplate setCode(String code) {
this.code = code;
return this;
}
/**
* {@code msg} 的get方法
*
* @return {@code msg} 的值
*/
@SuppressWarnings("all")
public String getMsg() {
return msg;
}
/**
* {@code msg} 的get方法
*
* @param msg 信息
* @return {@link ResultTemplate}
*/
public ResultTemplate setMsg(String msg) {
this.msg = msg;
return this;
}
/**
* {@code success} 的get方法
*
* @return {@code success} 的值
*/
@SuppressWarnings("all")
public Boolean getSuccess() {
return success;
}
/**
* {@code success} 的get方法
*
* @param success 操作结果
* @return {@link ResultTemplate}
*/
public ResultTemplate setSuccess(Boolean success) {
this.success = success;
return this;
}
/**
* {@code header} 的get方法
*
* @return {@code header} 的值
*/
@SuppressWarnings("all")
public ResultHeader getHeader() {
return header;
}
/**
* {@code header} 的get方法
*
* @param header 响应头
* @return {@link ResultTemplate}
*/
public ResultTemplate setHeader(ResultHeader header) {
this.header = header;
return this;
}
/**
* {@code body} 的get方法
*
* @return {@code body} 的值
*/
@SuppressWarnings("all")
public T getBody() {
return body;
}
/**
* {@code body} 的set方法
*
* @param body 响应体
* @return {@link ResultTemplate}
*/
public ResultTemplate setBody(T body) {
this.body = body;
return this;
}
public LocalDateTime getDate() {
return date;
}
public ResultTemplate setDate(LocalDateTime date) {
this.date = date;
return this;
}
@Override
public String toString() {
return "ResultTemplate{" +
"code='" + code + '\'' +
", msg='" + msg + '\'' +
", success=" + success +
", header=" + header +
", body=" + body +
", date=" + date +
'}';
}
}