ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

统一返回数据格式

2022-01-09 21:00:43  阅读:155  来源: 互联网

标签:返回 code return success 数据格式 data public 统一


一、统一返回数据格式

项目中我们会将响应封装成json返回,一般我们会将所有接口的数据格式统一, 使前端(iOS Android, Web)对数据的操作更一致、轻松。 一般情况下,统一返回数据格式没有固定的格式,只要能描述清楚返回的数据状态以及要返回的具体数据就可以。但是一般会包含状态码、返回消息、数据这几部分内容 例如,我们的系统要求返回的基本数据格式如下: 列表:
{

"success": true,

"code": 20000,

"message": "成功",

"data": {

  "items": [

    {

      "id": "1",

      "name": "刘德华",

      "intro": "毕业于师范大学数学系,热爱教育事业,执教数学思维6年有余"

    }

  ]

}

}

分页:

{

"success": true,

"code": 20000,

"message": "成功",

"data": {

"total": 17,

"rows": [

{

"id": "1",

"name": "刘德华",

"intro": "毕业于师范大学数学系,热爱教育事业,执教数学思维6年有余"

}

]

}

}

没有返回数据:

{

"success": true,

"code": 20000,

"message": "成功",

"data": {}

}
失败:
{

"success": false,

"code": 20001,

"message": "失败",

"data": {}

}

因此,我们定义统一结果

{

"success": 布尔, //响应是否成功

"code": 数字, //响应码

"message": 字符串, //返回消息

"data": HashMap //返回数据,放在键值对中

}

二、创建统一结果返回类

1、在common模块下创建子模块common_utils

2、创建接口定义返回码

创建包com.wang.commonutils,创建接口 ResultCode.java
public interface ResultCode {

    public static Integer SUCCESS = 20000;
    public static Integer ERROR = 20001;
}

3、创建结果类

创建类 R.java
@Data
public class R {

  @ApiModelProperty(value = "是否成功")

  private Boolean success;


  @ApiModelProperty(value = "返回码")

  private Integer code;


  @ApiModelProperty(value = "返回消息")

  private String message;


  @ApiModelProperty(value = "返回数据")

  private java.util.Map<String, Object> data = new HashMap<String, Object>();


  private R(){}


  public static R ok(){

      R r = new R();

      r.setSuccess(true);

      r.setCode(ResultCode.SUCCESS);

      r.setMessage("成功");

      return r;

  }


  public static R error(){

      R r = new R();

      r.setSuccess(false);

      r.setCode(ResultCode.ERROR);

      r.setMessage("失败");

      return r;

  }


  public R success(Boolean success){

      this.setSuccess(success);

      return this;

  }


  public R message(String message){

      this.setMessage(message);

      return this;

  }


  public R code(Integer code){

      this.setCode(code);

      return this;

  }


  public R data(String key, Object value){

      this.data.put(key, value);

      return this;

  }


  public R data(java.util.Map<String, Object> map){

      this.setData(map);

      return this;//链式编程

  }

}

三、统一返回结果使用

1、在service模块中添加依赖

<dependency><groupId>com.atguigu</groupId><artifactId>common_utils</artifactId><version>0.0.1-SNAPSHOT</version></dependency>

2、修改Controller中的返回结果

列表
@ApiOperation(value = "所有讲师列表")
@GetMapping
public R list(){
List<Teacher> list = teacherService.list(null);
return R.ok().data("items", list);
}

 

删除

@ApiOperation(value = "根据ID删除讲师")
@DeleteMapping("{id}")
public R removeById(

@ApiParam(name = "id", value = "讲师ID", required = true)

@PathVariable String id){

teacherService.removeById(id);

return R.ok();

}

 

标签:返回,code,return,success,数据格式,data,public,统一
来源: https://www.cnblogs.com/upupup-999/p/15782177.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有