您的位置:首页 > 其它

从0到1搭建前后端分离的脚手架框架之后端(一)统一返回信息封装

2020-01-14 16:34 253 查看

第一次写博客,希望通过博客来记录一下自己的学习过程,希望借此来巩固编程技能, 想了很久决定从0到1搭建一个前后端分离的管理后台脚手架,后端基于

Sptringboot
搭建, 前端基于
angular ng-alain
搭建.

作为前后端分离项目需要规范返回数据结构,通常情况下返回的数据结构包含状态码和描述信息和操作数据

  • 成功时返回信息:
{
"code": 0,
"message": "success",
"result": {
"username": "test",
"likeName": "aaaa"
}
}

对应的java代码为:

public class RestResponse<T> implements Serializable {
private static final long serialVersionUID = 7545652265259278927L;
private Integer code;
private String message;
private T result;

public RestResponse(Integer code, String message) {
this.code = code;
this.message = message;
}

public RestResponse() {
this(GlobalCode.SUCCESS.getCode(), GlobalCode.SUCCESS.getText());
}

public static <T> RestResponse<T> success(T result) {
RestResponse<T> response = new RestResponse<>();
response.setResult(result);
return response;
}
public static <T> RestResponse<T> error(RestCode code) {
return new RestResponse<>(code.getCode(),code.getText());
}

}

通过静态方法快速生成成功和失败的返回信息,其中

restCode
为一个接口,该接口继承了BaseEnum接口, 所有返回状态码都继承
RestCode
接口, 把不同的业务码通过不同Enum来封装.

public interface RestCode extends BaseEnum<Integer> {

}

公用的状态码通过

GlobalCode
来封装

public enum  GlobalCode implements RestCode {
/**全局状态码*/
SUCCESS(0, "Success"),
;

private Integer code;
private String text;
}

为了能够方便的操作枚举,项目中所有枚举类型都必须继承BaseEnum接口, BaseEnum对象封装了操作枚举的常规方法.

public interface BaseEnum<V> {
V getCode();
String getText();

static <T extends Enum & BaseEnum> Optional<T> find(Class<T> type, Predicate<T> predicate) {
if (type.isEnum()) {
return Arrays.stream(type.getEnumConstants())
.filter(predicate).findFirst();
}
return Optional.empty();
}

static <T extends Enum & DictEnum<?>> Optional<T> findOptionalByCode(Class<T> type, Object code) {
return find(type, e -> e.getCode() == code || e.getCode().equals(code)
|| String.valueOf(e.getCode()).equalsIgnoreCase(String.valueOf(code)));
}

// .......

}

其中

findOptionalByCode
方法是根据返回码获取到对应的枚举类型.

项目源码

  • 点赞
  • 收藏
  • 分享
  • 文章举报
穆伊梦007 发布了8 篇原创文章 · 获赞 0 · 访问量 177 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐