返回结果统一格式化封装ResultUtil

234 阅读1分钟

在开发项目时,都会封装一些工具类,进行工具类的封装。这些工具类使我们的代码看起来像史诗般优雅,当然,这些工具类也在不断的优化,力求达到简洁、优雅。本篇文章是对返回结果的统一格式化封装。如有不足之处欢迎指出批评! 枚举类 ResponseCodeEnums.eum

@Getter  
@AllArgsConstructor  
public enum ResponseCodeEnums {  
/**  
* 成功  
*/  
SUCCESS(200, "success"),  
/**  
* 失败  
*/  
FAIL(500, "failed"),  
  
HTTP_STATUS_200(200, "操作成功"),  
HTTP_STATUS_400(400, "请求方法错误"),  
HTTP_STATUS_401(401, "no authentication"),  
HTTP_STATUS_403(403, "没有权限"),  
HTTP_STATUS_500(500, "系统内部错误");  
  
private final int code;  
  
private final String message;  
}

工具类ResultUtils.java

@Data  
public class ResultUtils<T> {  
/**  
* 状态码  
*/  
protected int code;  
  
/**  
* 响应信息  
*/  
protected String message;  
  
/**  
* 返回数据  
*/  
private T data;  
  
public static <T> ResultUtils<T> success() {  
return new ResultUtils<>();  
}  
  
public static <T> ResultUtils<T> success(T data) {  
return new ResultUtils<>(data);  
}  
  
public static <T> ResultUtils<T> fail(String message) {  
return new ResultUtils<>(ResponseCodeEnums.FAIL.getCode(), message);  
}  
  
public ResultUtils() {  
this.code = ResponseCodeEnums.SUCCESS.getCode();  
this.message = ResponseCodeEnums.SUCCESS.getMessage();  
}  
  
public ResultUtils(ResponseCodeEnums statusEnums) {  
this.code = statusEnums.getCode();  
this.message = statusEnums.getMessage();  
}  
  
/**  
* 若没有数据返回,可以人为指定状态码和提示信息  
*/  
public ResultUtils(int code, String msg) {  
this.code = code;  
this.message = msg;  
}  
  
/**  
* 有数据返回时,状态码为200,默认提示信息为“操作成功!”  
*/  
public ResultUtils(T data) {  
this.data = data;  
this.code = ResponseCodeEnums.SUCCESS.getCode();  
this.message = ResponseCodeEnums.SUCCESS.getMessage();  
}  
  
/**  
* 有数据返回,状态码为 200,人为指定提示信息  
*/  
public ResultUtils(T data, String msg) {  
this.data = data;  
this.code = ResponseCodeEnums.SUCCESS.getCode();  
this.message = msg;  
}  
}

在项目中引入方法如下

@GetMapping("expireDate")  
public ResultUtils<String> expireDate() throws ParseException {  
String time = "2024-02-01 00:00:00";  
SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );  
Date expireTime = sdf.parse( time );  
Date currentDate = new Date();  
if(expireTime.before(currentDate)){  
log.info("您已过期,请续费");  
return ResultUtils.success("已过期");  
}  
return ResultUtils.success("可以继续访问");  
  
}

这便是封装result的全过程,希望对你会有帮助!