项目笔记4:统一返回数据格式

╰+攻爆jí腚メ 2022-10-22 04:13 231阅读 0赞

项目中我们会将响应封装成json返回,一般我们会将所有接口的数据格式统一, 使前端(iOS Android, Web)对数据的操作更一致、轻松。

一般情况下,统一返回数据格式没有固定的格式,只要能描述清楚返回的数据状态以及要返回的具体数据就可以。但是一般会包含状态码、返回消息、数据这几部分内容

数据格式有2种,对象和数组,两种格式混合使用。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1NreV9yYWJiaXQ5NA_size_16_color_FFFFFF_t_70

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

2、创建interface,定义数据返回状态码

  1. package com.tutu.commonutils;
  2. public interface ResultCode {
  3. public static Integer SUCCESS = 20000; //成功
  4. public static Integer ERROR = 20001; //失败
  5. }

3、统一返回结果对象

其中private R(){},构造方法私有化,别人不能调用,只能调用静态方法public static R ok()和public static R error()

@Data是lomlok注解,可以自动生成get,set方法

代码中return this是为了使用链式编程R.ok().code().message()

  1. //统一返回结果的类
  2. @Data
  3. public class R {
  4. @ApiModelProperty(value = "是否成功")
  5. private Boolean success;
  6. @ApiModelProperty(value = "返回码")
  7. private Integer code;
  8. @ApiModelProperty(value = "返回消息")
  9. private String message;
  10. @ApiModelProperty(value = "返回数据")
  11. private Map<String, Object> data = new HashMap<String, Object>();
  12. //把构造方法私有
  13. private R() {}
  14. //成功静态方法
  15. public static R ok() {
  16. R r = new R();
  17. r.setSuccess(true);
  18. r.setCode(ResultCode.SUCCESS);
  19. r.setMessage("成功");
  20. return r;
  21. }
  22. //失败静态方法
  23. public static R error() {
  24. R r = new R();
  25. r.setSuccess(false);
  26. r.setCode(ResultCode.ERROR);
  27. r.setMessage("失败");
  28. return r;
  29. }
  30. public R success(Boolean success){
  31. this.setSuccess(success);
  32. return this;
  33. }
  34. public R message(String message){
  35. this.setMessage(message);
  36. return this;
  37. }
  38. public R code(Integer code){
  39. this.setCode(code);
  40. return this;
  41. }
  42. public R data(String key, Object value){
  43. this.data.put(key, value);
  44. return this;
  45. }
  46. public R data(Map<String, Object> map){
  47. this.setData(map);
  48. return this;
  49. }
  50. }

4、使用统一结果

1)在service中引入common_utils

  1. <dependencies>
  2. <dependency>
  3. <groupId>com.atguigu</groupId>
  4. <artifactId>common_utils</artifactId>
  5. <version>0.0.1-SNAPSHOT</version>
  6. </dependency>

2) 把接口的返回类型都写成R

  1. //1 查询讲师表所有数据
  2. //rest风格
  3. @ApiOperation(value = "所有讲师列表")
  4. @GetMapping("findAll")
  5. public R findAllTeacher() {
  6. //调用service的方法实现查询所有的操作
  7. List<EduTeacher> list = teacherService.list(null);
  8. return R.ok().data("items",list);
  9. }

发表评论

表情:
评论列表 (有 0 条评论,231人围观)

还没有评论,来说两句吧...

相关阅读

    相关 统一json返回格式

    springmvc控制器接受到一个用户登录的请求, 要判断用户名密码是否为空, 还要去数据库检查密码是否正确。 然后以json的格式返回到前台, 前台再根据状态码来判断是允许登