001-高可用后台返回数据规范--Java
2017-06-05 本文已影响224人
Time_情书
欢迎各位同学加入群:397885169,里面大神超多,会帮助解决各种问题。
一:
在日常工作中,后台需要和移动端或者前端进行数据交互。你是否还在纠结如何进行数据封装?你是否还在为每一个接口写一个处理返回数据的方法?今天,就来一个符合移动规范,高可用的数据处理实体类。
二:分析
移动端到底需要哪些数据?
1-:固定的返回数据类型
2-:状态码<此状态码表示请求是成功还是失败,失败属于哪一种约定类型>
3-:请求错误,返回错误信息
4-:真正的数据data
作用:1-:返回固定的数据类型,便于移动端进行相关数据处理封装。
2-:状态码。此状态码用来表明移动端访问服务器的状态。约定,当值为0时,服务器返回“正确”的数据。其他则为“不正确,不符合约定或者预期”的数据。比如,登录接口,只有当状态码为0时,表明登录成功,为1,表明用户名已经存在,则返回状态码为1的错误信息需要放到msg字段。
3-:请求错误。移动端分为两种。一种为服务器无法链接,网络错误。另一种错误是请求后返回的数据为“不正确,不符合约定或者预期”的数据。
4-:当返回的状态码为0时,此时data数据就是服务器正确处理请求后需要告诉移动端的数据。
三:Coding
1-:ResponseCode.class
public enum ResponseCode{d
SUCCESS(0,"SUCCESS"),
ERROR(1,"ERROR");
private int code;
private String msg;
ResponseCode (int code,String msg){
this.code=code;
this.msg=msg;
}
public int getCode(){
returncode;
}
public String getMsg(){
return msg;
}
}
2-:ServerResponse.class
使用spring注解
//@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
//保证序列化json的时候,对象的值为null时,不会返回给客户端
public class ServerResponse implements Serializable{
private int status;
private String msg;
private T data;
private ServerResponse (int status){
this.status=status;
}
private ServerResponse (ints tatus, String msg){
this.status=status;
this.msg=msg;
}
private ServerResponse (int status,String msg,T data){
this.status=status;
this.msg=msg;
this.data=data;
}
private ServerResponse(int status,T data){
this.status=status;
this.data=data;
}
@JsonIgnore
//忽略,使之不在json序列化当中
public boolean isSuccess(){
return this.status==ResponseCode.SUCCESS.getCode();
}
public int getStatus(){
return status;
}
public T getData(){
return data;
}
public String getMsg(){
return msg;
}
public ServerResponse createBySuccess(){
return new ServerResponse(ResponseCode.SUCCESS.getCode());
}
public ServerResponse createBySuccessMsg(String msg ){
return new
ServerResponse(ResponseCode.SUCCESS.getCode(),msg);
}
public ServerResponse createBySuccess(T data){
return new
ServerResponse(ResponseCode.SUCCESS.getCode(),data);
}
public ServerResponse createBySuccess(String msg , T data){
return new
ServerResponse(ResponseCode.SUCCESS.getCode(), msg, data);
}
public ServerResponse createByError(){
return new
ServerResponse(ResponseCode.ERROR.getCode(),ResponseCode.ERROR.getMsg());
}
public ServerResponse createByErrorMsg(String msg){
return new
ServerResponse(ResponseCode.ERROR.getCode(),msg);
}
public ServerResponse createByError(int code,String msg){
return new ServerResponse( code,msg);
}
}
四:使用
1-:访问正确时,返回前端正确的code和默认msg;
ServerResponse response=ServerResponse.createBySuccessMsg();
2-:访问正确时,返回前端正确的code和自定义信息;
ServerResponse response=ServerResponse.createBySuccessMsg(”数据更新成功“);
3-:访问正确时,返回前端正确的code和自定义信息以及数据;
User user=new User();
ServerResponse response=ServerResponse.createBySuccess(”数据更新成功“,user);
4-:访问错误时,返回前端错误的code和默认msg;
ServerResponse response=ServerResponse.createByError();
5-:访问错误时,返回前端正确的code和自定义信息;
ServerResponse response=ServerResponse.createByErrorMsg(”数据更新失败“);
6-:访问错误时,返回前端自定义code和自定义信息;
ServerResponse response=ServerResponse.createByError(,10”数据更新失败“);
7-:需要判断某个返回值的code或者状态是否成功:
boolean isSuccess=ServerResponse.isSuccess();
2017-06-05;