项目笔记4:统一返回数据格式
项目中我们会将响应封装成json返回,一般我们会将所有接口的数据格式统一, 使前端(iOS Android, Web)对数据的操作更一致、轻松。 项目中我们会将响应封装成json返回,一般我们会将所有接口的数据格式统一, 使前端(iOS Android, Web)对数据的操作更一致、轻松。
一般情况下,统一返回数据格式没有固定的格式,只要能描述清楚返回的数据状态以及要返回的具体数据就可以。但是一般会包含状态码、返回消息、数据这几部分内容 一般情况下,统一返回数据格式没有固定的格式,只要能描述清楚返回的数据状态以及要返回的具体数据就可以。但是一般会包含状态码、返回消息、数据这几部分内容
数据格式有2种,对象和数组,两种格式混合使用。 数据格式有2种,对象和数组,两种格式混合使用。
1、在common模块中创建子模块common_utils
2、创建interface,定义数据返回状态码
package com.tutu.commonutils; public interface ResultCode { public static Integer SUCCESS = 20000; //成功 public static Integer ERROR = 20001; //失败 }
3、统一返回结果对象
其中private R(){},构造方法私有化,别人不能调用,只能调用静态方法public static R ok()和public static R error()
@Data是lomlok注解,可以自动生成get,set方法
代码中return this是为了使用链式编程R.ok().code().message()
//统一返回结果的类 @Data public class R { @ApiModelProperty(value = "是否成功") private Boolean success; @ApiModelProperty(value = "返回码") private Integer code; @ApiModelProperty(value = "返回消息") private String message; @ApiModelProperty(value = "返回数据") private 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(Map<String, Object> map){ this.setData(map); return this; } }
4、使用统一结果
1)在service中引入common_utils
<dependencies> <dependency> <groupId>com.atguigu</groupId> <artifactId>common_utils</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency>
2) 把接口的返回类型都写成R
//1 查询讲师表所有数据 //rest风格 @ApiOperation(value = "所有讲师列表") @GetMapping("findAll") public R findAllTeacher() { //调用service的方法实现查询所有的操作 List<EduTeacher> list = teacherService.list(null); return R.ok().data("items",list); }
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
iPnoe14系列的涨价已成定局?