React-Native

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;

上一篇下一篇

猜你喜欢

热点阅读