返回数据标准
我们做了一个后台管理项目(lotteryCMS),为了解析时好解析,我们会对从db中拿到的数据进行封装,当前端接受到数据的时候根据反馈的code就可以决定自己是否要解析这次查询的数据了。
我们定义一个基本的返回对象Response,我们的操作无非是两种情况,成功或者失败:
import java.io.Serializable; public class Response implements Serializable { private static final long serialVersionUID = -1412088307616236078L; private String code = CodeDict.SUCCESS.getCode(); private String msg = CodeDict.SUCCESS.getDesc(); public String getCode() { return code; } public void setCode(String code) { this.code = code; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } }
当反馈的Response成功的时候提示成功,失败的时候提示失败,当处于未登录状态的时候让他去登陆,对应的响应码前对做出对应页面转换。
对应的依赖代码:
public enum CodeDict { SUCCESS("0","成功"), FAILED("1","失败"), EXCEPT("2","异常"), LOGIN_NEED("9","未登录"), NOAUTH("10","无权限"), NOT_PERMISSION_REQUEST("-1","不允许的操作"); private String code; private String desc; private CodeDict(String code, String desc){ this.code = code; this.desc = desc; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public String getDesc() { return desc; } public void setDesc(String desc) { this.desc = desc; } }
上述代码只是反馈标准,没有反馈数据,只是我们的反馈约定,成功或者失败。如果说是查询的话,我们需要把数据给带到前端去的,所以到时候肯定就不止这些数据了,所以我们需要对数据进行更深一个层次的封装:
public class CommonRsp<T> extends Response { private static final long serialVersionUID = 460456776638649480L; private T data; public T getData() { return data; } public void setData(T data) { this.data = data; } }
这样的话,当我们执行查询操作的时候我们就可以把我们的数据给塞进去传递到前端进行解析。
如果说这样还不能满足你现在的项目需求的话那肯定就是说分页没有喽,如果说需要分页的话,那么我们就需要封装另一个Page对象,然后往CommonRsp中塞Page对象反馈到前端让其解析。
import java.util.List; public class Page<T> { private Integer page;// 当前页 private Integer totalPage;// 总页数 private Integer totalRecords;// 总记录数 private Integer rows;// 每页要显示的数据条目 private List<T> result; public Integer getPage() { return page; } public void setPage(Integer page) { this.page = page; } public Integer getTotalRecords() { return totalRecords; } public void setTotalRecords(Integer totalRecords) { this.totalRecords = totalRecords; } public Integer getRows() { return rows; } public void setRows(Integer rows) { this.rows = rows; } public List<T> getResult() { return result; } public void setResult(List<T> result) { this.result = result; } public void setTotalPage(Integer totalPage) { this.totalPage = totalPage; } public int getTotalPage() { totalPage = totalRecords % rows == 0 ? totalRecords / rows : totalRecords / rows + 1; return totalPage; } }上述代码基本上就是我么lotteryCMS的反馈标准,当然不是所有的请求都是这样反馈数据的,比如你前端使用的是第三方tree插件,而且你不能或者不方便指定tree的起始解析节点的情况下,那就只能按照当前插件给的api文档去编码,不要学死code,灵活一点。
上述代码是只有反馈的成功与否,没有数据,那该怎么办呢?先不要往下看,自己先想一下。