开发中,如果前端和后端,在没有统一返回数据格式,我们来看一下会发生什么:
后台开发人员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; } }
原文地址:https://www.cnblogs.com/tanzq/p/9754510.html
时间: 2024-11-08 23:13:37