在前后端分离的项目中,我们经常需要使用Json格式的数据进行信息交换。
如果项目中没有统一的Json返回格式,那么每个开发人员可能就会返回不一样的数据格式,如此会给前端开发以及日后项目的维护带来很多不便。
所以,项目中维护一个统一的Json格式返回工具类非常有必要。通常情况下,只需要如下三个类即可:
- ReturnJson
这是一个供开发者调用的工具类,由它直接提供统一的Json格式数据; - ReturnEnum
这是一个返回信息枚举类,开发者不能随意定义返回信息,应该在该枚举类中定义返回信息的类别; - PageInfo
当返回的数据需要用到分页时,应该给前端提供额外的分页信息。
下面分别是这三个类的具体实现:
public class ReturnJson<T> {
private Integer code;
private String message;
private T data;
private ReturnJson(Integer code, String message) {
this.code = code;
this.message = message;
this.data = null;
}
private ReturnJson(Integer code, String message, T data) {
this.code = code;
this.message = message;
this.data = data;
}
/**
* 支持自定义的code和message
*/
public static ReturnJson json(Integer code, String message) {
return new ReturnJson(code, message);
}
public static <T> ReturnJson json(Integer code, String message, T data) {
return new ReturnJson<>(code, message, data);
}
/**
* 通用成功
*/
public static ReturnJson success() {
return ReturnJson.json(ReturnEnum.SUCCESS.getCode(), ReturnEnum.SUCCESS.getMessage());
}
public static <T> ReturnJson success(T data) {
return ReturnJson.json(ReturnEnum.SUCCESS.getCode()
, ReturnEnum.SUCCESS.getMessage(), data);
}
/**
* 带分页信息的通用成功
*/
public static <T> ReturnJson pageSuccess(Long totalRecords, Integer currentPage, Integer pageSize, T data) {
return ReturnJson.success(new PageInfo<>(totalRecords, currentPage, pageSize, data));
}
/**
* 通用失败
*/
public static ReturnJson fail() {
return ReturnJson.json(ReturnEnum.FAIL.getCode(), ReturnEnum.FAIL.getMessage());
}
}
public enum ReturnEnum {
/**
* 通用成功
**/
SUCCESS(200, "success"),
/**
* 通用失败
**/
FAIL(400, "fail"),
/**
* 权限访问错误
**/
AUTH_ERROR(401, "auth error"),
/**
* 账密登录失败
**/
LOGIN_ERROR(402, "login deny");
private Integer code;
private String message;
ReturnEnum(Integer code, String message){
this.code = code;
this.message = message;
}
public Integer getCode(){
return this.code;
}
public String getMessage(){
return this.message;
}
}
public class PageInfo<T> {
private Long totalRecords;
private Integer currentPage;
private Long totalPage;
private Integer pageSize;
private T data;
public PageInfo(Long totalRecords, Integer currentPage, Integer pageSize, T data){
this.totalRecords = totalRecords;
this.currentPage = currentPage;
this.pageSize = pageSize;
this.totalPage = (totalRecords - 1) / pageSize + 1;
this.data = data;
}
}
本案例只是一个最简单的实现,后续可以视使用需求增加更多的Json返回方法。
网友评论