通常情况下,大到系统与系统间的通信,小到控制器的返回,我们现在都是采用的json传输,但是单单传输需要的数据,往往不能达到对返回结果成功与否的判断,或是出现解析错误,这时候就需要制定一套标准的传输协议:
//成功状态下
{
"code": "0",
"msg": "",
"data": {}
}
//失败状态下
{
"status": "1",
"msg": "失败的原因",
"data": {}
}
以下为实体设计:
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* 响应信息主体
*
* @param <T>
*/
@ToString
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@ApiModel(value = "响应信息主体")
public class Result<T> implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 成功标记
*/
private static Integer SUCCESS = 0;
/**
* 失败标记
*/
private static Integer FAIL = 1;
@Getter
@Setter
@ApiModelProperty(value = "返回标记:成功标记=0,失败标记=1")
private int code;
@Getter
@Setter
@ApiModelProperty(value = "返回信息")
private String msg;
@Getter
@Setter
@ApiModelProperty(value = "数据")
private T data;
public static <T> Result<T> ok() {
return restResult(null, SUCCESS, null);
}
public static <T> Result<T> ok(T data) {
return restResult(data, SUCCESS, null);
}
public static <T> Result<T> ok(T data, String msg) {
return restResult(data, SUCCESS, msg);
}
public static <T> Result<T> fail() {
return restResult(null, FAIL, null);
}
public static <T> Result<T> fail(String msg) {
return restResult(null, FAIL, msg);
}
public static <T> Result<T> fail(T data) {
return restResult(data, FAIL, null);
}
public static <T> Result<T> fail(T data, String msg) {
return restResult(data, FAIL, msg);
}
private static <T> Result<T> restResult(T data, int code, String msg) {
Result<T> apiResult = new Result<>();
apiResult.setCode(code);
apiResult.setData(data);
apiResult.setMsg(msg);
return apiResult;
}
}
网友评论