Java项目如何为Controller设置统一的返回格式呢?
下文笔者讲述java代码设置统一返回格式的方法及示例分享,如下所示
定义统一返回格式的实现思路
我们只需定义一个统一类
设置相应的字段,即可方便统一样式返回
例:springBoot设置统一返回格式
@Data
@Builder
@AllArgsConstructor
public class ResultDto<T> implements Serializable{
private static final long serialVersionUID = 1L;
/**
* 返回码
*/
private ResultCode code;
/**
* 返回消息
*/
private String message;
/**
* 数据数
*/
private long total;
/**
* 返回数据
*/
private T data;
public ResultDto(){this.total = Long.valueOf(0L);}
public ResultDto(ResultCode code){this.code = code;}
public ResultDto(ResultCode code, T data){
super();
this.code = code;
this.data = data;
this.message = code.getMessage();
}
public String getCode(){
return this.code.getCode();
}
public String getCodeMessage(){
return this.code.getMessage();
}
public static <T> ResultDto<T> ok(){
return new ResultDto<T>(ResultCode.OK);
}
public static <T> ResultDto ok(T data){
return ResultDto.builder()
.code(ResultCode.OK)
.data(data)
.message(ResultCode.OK.getMessage())
.build();
}
public static <T> ResultDto ok(T data, long total) {
return ResultDto.builder()
.code(ResultCode.OK)
.data(data)
.total(total)
.message(ResultCode.OK.getMessage())
.build();
}
public static <T> ResultDto ok(String message){
return ResultDto.builder()
.code(ResultCode.OK)
.message(message)
.build();
}
public static <T> ResultDto ok(String message, T data){
return ResultDto.builder()
.code(ResultCode.OK)
.message(message)
.data(data)
.build();
}
public static <T> ResultDto error(){
return ResultDto.builder()
.code(ResultCode.ERROR)
.message(ResultCode.ERROR.getMessage())
.data(null)
.build();
}
public static <T> ResultDto error(String message){
return ResultDto.builder()
.code(ResultCode.ERROR)
.message(message == null || message.isEmpty() ? ResultCode.ERROR.getMessage() : message)
.data(null)
.build();
}
public boolean isSuccess(){
if (this.getCode() == ResultCode.OK.name()){
return true;
}
return false;
}
}
返回状态码枚举类
@Getter
public enum ResultCode {
OK("200", "成功"),
ERROR("201", "失败"),
PARAM_ERROR("202", "参数不正确"),
SERVICE_ERROR("203", "服务异常"),
DATA_ERROR("204","数据异常"),
NOT_LOG_IN("205","未登录"),
NO_ACCESS("206", "没有权限"),
TOKEN_ERROR("207", "token错误");
private String code;
private String message;
ResultCode(String code,String message){
this.code = code;
this.message = message;
}
public String getCode(){return this.code;}
public String getMessage(){return this.message;}
public static ResultCode codeOf(String code){
ResultCode status = resolve(code);
if (status == null){
throw new IllegalArgumentException("No matching constant for [" + code + "]");
}
return status;
}
public static ResultCode resolve(String statusCode){
for (ResultCode resultCode : values()){
if (resultCode.code == statusCode){
return resultCode;
}
}
return null;
}
public String toString(){
return this.code + " " + name();
}
}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


