接口数据返回---标准格式

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

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

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

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

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

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

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

接口数据返回格式:


  1. package response;
  2. import domain.ReturnCode;
  3. /**
  4. * Created by lightClouds917
  5. * Date 2017/11/10
  6. * Description:接口统一返回格式
  7. */
  8. public class ResponseWrapper {
  9. /**是否成功*/
  10. private boolean success;
  11. /**返回码*/
  12. private String code;
  13. /**返回信息*/
  14. private String msg;
  15. /**返回数据*/
  16. private Object data;
  17. /**
  18. * 自定义返回结果
  19. * 建议使用统一的返回结果,特殊情况可以使用此方法
  20. * @param success
  21. * @param code
  22. * @param msg
  23. * @param data
  24. * @return
  25. */
  26. public static ResponseWrapper markCustom(boolean success,String code,String msg,String data){
  27. ResponseWrapper responseWrapper = new ResponseWrapper();
  28. responseWrapper.setSuccess(success);
  29. responseWrapper.setCode(code);
  30. responseWrapper.setMsg(msg);
  31. responseWrapper.setData(data);
  32. return responseWrapper;
  33. }
  34. /**
  35. * 参数为空或者参数格式错误
  36. * @return
  37. */
  38. public static ResponseWrapper markParamError(){
  39. ResponseWrapper responseWrapper = new ResponseWrapper();
  40. responseWrapper.setSuccess(false);
  41. responseWrapper.setCode(ReturnCode.PARAMS_ERROR.getCode());
  42. responseWrapper.setMsg(ReturnCode.PARAMS_ERROR.getMsg());
  43. return responseWrapper;
  44. }
  45. /**
  46. * 查询失败
  47. * @return
  48. */
  49. public static ResponseWrapper markError(){
  50. ResponseWrapper responseWrapper = new ResponseWrapper();
  51. responseWrapper.setSuccess(false);
  52. responseWrapper.setCode(ReturnCode.FEAILED.getCode());
  53. responseWrapper.setMsg(ReturnCode.FEAILED.getMsg());
  54. responseWrapper.setData(null);
  55. return responseWrapper;
  56. }
  57. /**
  58. * 查询成功但无数据
  59. * @return
  60. */
  61. public static ResponseWrapper markSuccessButNoData(){
  62. ResponseWrapper responseWrapper = new ResponseWrapper();
  63. responseWrapper.setSuccess(true);
  64. responseWrapper.setCode(ReturnCode.NODATA.getCode());
  65. responseWrapper.setMsg(ReturnCode.NODATA.getMsg());
  66. responseWrapper.setData(null);
  67. return responseWrapper;
  68. }
  69. /**
  70. * 查询成功且有数据
  71. * @param data
  72. * @return
  73. */
  74. public static ResponseWrapper markSuccess(Object data){
  75. ResponseWrapper responseWrapper = new ResponseWrapper();
  76. responseWrapper.setSuccess(true);
  77. responseWrapper.setCode(ReturnCode.SUCCESS.getCode());
  78. responseWrapper.setMsg(ReturnCode.SUCCESS.getMsg());
  79. responseWrapper.setData(data);
  80. return responseWrapper;
  81. }
  82. public boolean isSuccess() {
  83. return success;
  84. }
  85. public void setSuccess(boolean success) {
  86. this.success = success;
  87. }
  88. public Object getData() {
  89. return data;
  90. }
  91. public void setData(Object data) {
  92. this.data = data;
  93. }
  94. public String getMsg() {
  95. return msg;
  96. }
  97. public void setMsg(String msg) {
  98. this.msg = msg;
  99. }
  100. public String getCode() {
  101. return code;
  102. }
  103. public void setCode(String code) {
  104. this.code = code;
  105. }
  106. @Override
  107. public String toString() {
  108. return "ResponseWrapper{" +
  109. "success=" + success +
  110. ", code=‘" + code + ‘\‘‘ +
  111. ", msg=‘" + msg + ‘\‘‘ +
  112. ", data=" + data +
  113. ‘}‘;
  114. }
  115. }

状态码


  1. package domain;
  2. /**
  3. * Created by lightClouds917
  4. * Date 2017/11/10
  5. * Description:接口返回码和返回值
  6. * 结合返回数据封装类ResponseWrapper,统一接口的数据返回格式
  7. */
  8. public enum ReturnCode {
  9. SUCCESS("0000","查询成功"),
  10. NODATA("0001","查询成功无记录"),
  11. FEAILED("0002","查询失败"),
  12. ACCOUNT_ERROR("1000", "账户不存在或被禁用"),
  13. API_NOT_EXISTS("1001", "请求的接口不存在"),
  14. API_NOT_PER("1002", "没有该接口的访问权限"),
  15. PARAMS_ERROR("1004", "参数为空或格式错误"),
  16. SIGN_ERROR("1005", "数据签名错误"),
  17. AMOUNT_NOT_QUERY("1010", "余额不够,无法进行查询"),
  18. API_DISABLE("1011", "查询权限已被限制"),
  19. UNKNOWN_IP("1099", "非法IP请求"),
  20. SYSTEM_ERROR("9999", "系统异常");
  21. private String code;
  22. private String msg;
  23. public String getCode() {
  24. return code;
  25. }
  26. public String getMsg() {
  27. return msg;
  28. }
  29. ReturnCode(String code, String msg) {
  30. this.code = code;
  31. this.msg = msg;
  32. }
  33. }

返回示例:

ResponseWrapper{success=true, code=‘0000‘, msg=‘查询成功‘, data=数据}

  1. ResponseWrapper{success=true, code=‘0001‘, msg=‘查询成功无记录‘, data=null}

  1. ResponseWrapper{success=false, code=‘0002‘, msg=‘查询失败‘, data=null}

  1. ResponseWrapper{success=false, code=‘1004‘, msg=‘参数为空或格式错误‘, data=null}

  1. ResponseWrapper{success=true, code=‘0000‘, msg=‘自定义msg‘, data=这是自定义的数据}

原文地址:https://www.cnblogs.com/jpfss/p/10757373.html

时间: 2024-10-08 12:50:35

接口数据返回---标准格式的相关文章

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

开发中,如果前端和后端,在没有统一返回数据格式,我们来看一下会发生什么: 后台开发人员A,在接口返回时,习惯返回一个返回码code=0000,然后返回数据: 后台开发人员B,在接口返回时,习惯直接返回一个boolean类型的success=true,然后返回数据: 后台开发人员C,在接口返回时,习惯在接口失败时返回码为code=0000. 可以看到,上面的三个开发人员,都没有大问题,没有谁对谁错,只要给前端接口文档,前端都是可以接上接口的.但是,在项目功能越来越多,接口数量持续增长时,对开发人员

接口应该返回统一格式,不能以文字作为调用方的判断依据的,要以状态码作为依据

/**     *     * 检查手机号码是否可用     * @param $cellphone 手机号码     */    public function checkPhone($cellphone) {        $cellphone = trim($cellphone);        if (InputCheck::CheckCellphone($cellphone) == false)            throw new ApiException(4001023);  

常用的API接口,返回JSON格式的服务API接口

物流接口 快递接口: http://www.kuaidi100.com/query?type=快递公司代号&postid=快递单号 ps:快递公司编码:申通="shentong" EMS="ems" 顺丰="shunfeng" 圆通="yuantong" 中通="zhongtong" 韵达="yunda" 天天="tiantian" 汇通="huit

喜马拉雅第三方客户端开发(接口和接口数据解析)。

前言:最近闲来无事,看了网上豆瓣的第三方客户端,手有点痒,决定自己动手开发一个客户端,比较了荔枝和喜马拉雅,决定开发喜马拉雅的第三方客户端. 客户端使用了WPF开发. 1.抓取接口: 首先得解决接口数据的问题,使用了手机端的喜马拉雅,抓包看了接口.这里推荐使用fiddler2这个工具.从图中可以看到接口信息,包括接口地址和参数的一些数据. 2.通过http获取接口数据和转换接口数据格式. 这里提供一个HttpWebRequestOpt类来获取接口数据. using System; using S

接口返回值response统一标准格式

一.为什么要对springboot的接口返回值统一标准格式 springboot默认情况下的response格式:String.Object.void.异常,以上几种情况,如果和客户端开发人员联调接口,他们会很懵逼,因为你给他们的接口没有一个统一的格式,客户端开发人员,不知道如何处理返回值,所以要统一response的标准格式. 二.定义response的标准格式 一般的response的标准格式包含三部分:1.status状态值:代表本次请求response的状态结果:2.response描述

JSON API免费接口 各种提供JSON格式数据返回服务网站的API接口

这里为大家搜集了一些能够返回JSON格式的服务接口.部分需要用JSONP调用. 电商接口 京东获取单个商品价格接口: http://p.3.cn/prices/mgets?skuIds=J_商品ID&type=1 用例 ps:商品ID这么获取:http://item.jd.com/954086.html 淘宝商品搜索建议: http://suggest.taobao.com/sug?code=utf-8&q=商品关键字&callback=cb 用例 ps:callback是回调函数

charles抓取线上接口数据替换为本地json格式数据

最近要做下拉刷新,无奈测试服务器的测试数据太少,没有足够的数据做下拉刷新,所以用charles抓取了测试服务器的接口,然后在伪造了很多数据返回到我的电脑上,下面来说说使用方法: 第一步: 安装FQ软件 XX-net,这个自己去百度安装方法,切换连接方式为系统代理,如下图: 第二步:以window为例,让charles支持跨域 打开charles软件 - > proxy菜单栏 -> 勾选windows proxy -> Flie菜单栏 -> New Session ->刷新你的

SpringMVC 统一返回JSON格式数据到前端

有时在给APP做接口功能的时候,都是返回JSON格式的数据,所以最好的只好在工程设置一个统一的数据返回方式 在SpringMVC 直接配置XML可以产生这种配置,比较简单 Spring的版本我用的是4.3.3的 <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter&qu

application/x-www-form-urlencoded multipart/form-data text/plain 后台返回的数据响应的格式类型

application/x-www-form-urlencoded multipart/form-data text/plain 为什么上传文件的表单里要加个属性 enctype  后台返回的数据响应的格式类型 上传文件的表单中<form>要加属性enctype="multipart/form-data",很多人只是死记硬背知道上传表单要这么 写,知其然而不知其所以然.那到底为什么要添加这个属性呢?它是什么意思呢?它又有什么其他可选值呢? 其实form表单在你不写encty