前后端分离之——接口数据返回---标准格式

Posted tanzq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前后端分离之——接口数据返回---标准格式相关的知识,希望对你有一定的参考价值。

开发中,如果前端和后端,在没有统一返回数据格式,我们来看一下会发生什么:

后台开发人员A,在接口返回时,习惯返回一个返回码code=0000,然后返回数据;

后台开发人员B,在接口返回时,习惯直接返回一个boolean类型的success=true,然后返回数据;

后台开发人员C,在接口返回时,习惯在接口失败时返回码为code=0000。

可以看到,上面的三个开发人员,都没有大问题,没有谁对谁错,只要给前端接口文档,前端都是可以接上接口的。但是,在项目功能越来越多,接口数量持续增长时,对开发人员而言,就是一种灾难,同一个前端,如果对接A和C,那她接接口时会很崩溃。因为返回的code,同样是0000,但是一个代表成功,一个代表失败,这时前端就会去找两个人沟通,看可不可以统一一下,但是两个人一看,最近写了几十个接口了,还和别人对接过,牵一发动全身,没法做改动了。看,这就是灾难。

所以,在项目开发中,初期搭建框架时,定好通用的接口数据返回格式,定义好全局的状态码,是非常有必要的。一个项目,甚至整个公司,遵循同一套接口返回格式规范,这样可以极大的提高进度,降低沟通成本。

下面的两个类,一个是数据返回格式,是自定义的,很简单,但是可通用,这里分享一下,返回给前端时,根据情况,直接调用此类中的方法做返回值;另一个是状态码,这个可以根据项目实际情况,自己做修改。

接口数据返回格式:

package response;
 
import domain.ReturnCode;
 
/**
 * Created by lightClouds917
 * Date 2017/11/10
 * Description:接口统一返回格式
 */
public class ResponseWrapper {
    private Integer code;//状态码
    private Boolean isSuccess;//状态
    private String massege;//消息
    private Object result;//数据对象
    
    /**
    * 无参构造器
    */
    public Result(){
    super();
    }
    
    /**
    * 只返回状态,状态码,消息
    * @param statu
    * @param code
    * @param massege
    */
    public Result(Boolean success, Integer code, String massege){
    super();
    this.isSuccess=success;
    this.code=code;
    this.massege=massege;
    }
    
    /**
    * 只返回状态,状态码,数据对象
    * @param statu
    * @param code
    * @param object
    */
    public Result(Boolean success, Integer code, Object result){
    super();
    this.isSuccess=success;
    this.code=code;
    this.result=result;
    }
    
    /**
    * 返回全部信息即状态,状态码,消息,数据对象
    * @param statu
    * @param code
    * @param massege
    * @param result
    */
    public Result(Boolean success, Integer code, String massege, Object result){
    super();
    this.isSuccess=success;
    this.code=code;
    this.massege=massege;
    this.result=result;
    }
    
    public Integer getCode() {
    return code;
    }
    
    public void setCode(Integer code) {
    this.code = code;
    }
    
    public Boolean getIsSuccess() {
    return isSuccess;
    }
    
    public void setIsSuccess(Boolean isSuccess) {
    this.isSuccess = isSuccess;
    }
    
    public String getMassege() {
    return massege;
    }
    
    public void setMassege(String massege) {
    this.massege = massege;
    }
    
    public Object getResult() {
    return result;
    }
    
    public void setResult(Object result) {
    this.result = result;
    }


}
 

 

状态码

public enum ReturnCode {

    SUCCESS(0000,"查询成功"),
    NODATA(0001,"查询成功无记录"),
    FEAILED(0002,"查询失败"),
    ACCOUNT_ERROR(1000, "账户不存在或被禁用"),
    API_NOT_EXISTS(1001, "请求的接口不存在"),
    API_NOT_PER(1002, "没有该接口的访问权限"),
    PARAMS_ERROR(1004, "参数为空或格式错误"),
    SIGN_ERROR(1005, "数据签名错误"),
    AMOUNT_NOT_QUERY(1010, "余额不够,无法进行查询"),
    API_DISABLE(1011, "查询权限已被限制"),
    UNKNOWN_IP(1099, "非法IP请求"),
    SYSTEM_ERROR(9999, "系统异常");
     
    private int code;
    private String msg;

    public int getCode() {
        return code;
    }

    public String getMsg() {
        return msg;
    }
 
    private ReturnCode(int code, String msg) {
        this.code = code;
        this.msg = msg;
    }
}

 


以上是关于前后端分离之——接口数据返回---标准格式的主要内容,如果未能解决你的问题,请参考以下文章

前后端分离之接口文档管理及数据模拟工具docdoc与dochelper

前后端分离-模拟数据之RAP2快速入门

前后端分离

前后端分离方案以及技术选型

前后端分离之让前端开发脱离接口束缚(mock)

DRF0. 前后端分离