0
点赞
收藏
分享

微信扫一扫

python虚拟机集锦(3)-垃圾收集算法(3)

自信的姐姐 2023-05-20 阅读 74

文章目录

表现层数据封装

数据返回格式

表现层数据封装是什么意思呢? 我们根据目前做的增删改查功能来看看目前返回数据的格式存在哪些问题

true
{
    "id": 1,
    "type": "计算机理论",
    "name": "Spring实战 第5版",
    "description": "Spring入门经典教程"
}
[
    {
        "id": 1,
        "type": "计算机理论",
        "name": "Spring实战 第5版",
        "description": "Spring入门经典教程"
    },
    {
        "id": 2,
        "type": "计算机理论",
        "name": "Spring 5核心原理与30个类手写实战",
        "description": "十年沉淀之作"
    }
]

因此我们需要对数据整合, 返回一个统一的数据格式给前端人员; 于是我们就统一了一个前端接收数据的格式: 创建结果模型类,封装数据到data属性中

{
    "data":true
}
{
    "data":{
        "id": 1,
        "type": "计算机理论",
        "name": "Spring实战 第5版",
        "description": "Spring入门经典教程"
    }
}
{
    "data":[
        {
            "id": 1,
            "type": "计算机理论",
            "name": "Spring实战 第5版",
            "description": "Spring入门经典教程"
        },
        {
            "id": 2,
            "type": "计算机理论",
            "name": "Spring 5核心原理与30个类手写实战",
            "description": "十年沉淀之作"
        }
    ]
}

在这里插入图片描述

针对区分数据, 我们在模型类中新增一个code属性, 将操作结果封装到code属性中

{
    "code": 20011,
    "data": false
}
{
    "code": 20021,
    "data": true
}
{
    "code": 20031,
    "data": true
}
{
    "code": 20041,
    "data":{
        "id": 1,
        "type": "计算机理论",
        "name": "Spring实战 第5版",
        "description": "Spring入门经典教程"
    }
}
{
    "code": 20041,
    "data":[
        {
            "id": 1,
            "type": "计算机理论",
            "name": "Spring实战 第5版",
            "description": "Spring入门经典教程"
        },
        {
            "id": 2,
            "type": "计算机理论",
            "name": "Spring 5核心原理与30个类手写实战",
            "description": "十年沉淀之作"
        }
    ]
}
{
    "code": 20041,
    "data":null
}
{
    "code": 20040,
    "data": null,
}

查询失败后, 我们需要封装特殊消息到message(msg)属性中, 例如返回一句文本提示查询失败; 到这里模型类的最终形式就确定下来了

{
    "code": 20040,
    "data": null,
    "msg": "数据查询失败,请重试!"
}

数据封装

我们需要定义一个模型类, 例如Result, 统一数据的返回结果

public class Result {
  	private Object data;
  	private Integer code;
  	private String msg;
}

注意:

public class Result {
    private Object data;
    private Integer code;
    private String msg;

    public Result() {
    }

    public Result(Integer code, Object data) {
        this.data = data;
        this.code = code;
    }

    public Result(Integer code, Object data, String msg) {
        this.data = data;
        this.code = code;
        this.msg = msg;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}

controller包下创建一个Code类, 用于设置统一数据返回结果编码

public class Code {
    public static final Integer SAVE_OK = 20011;
    public static final Integer DELETE_OK = 20021;
    public static final Integer UPDATE_OK = 20031;
    public static final Integer SELECT_OK = 20041;

    public static final Integer SAVE_ERR = 20010;
    public static final Integer DELETE_ERR = 20020;
    public static final Integer UPDATE_ERR = 20030;
    public static final Integer SELECT_ERR = 20040;
}

controller包下BookController中的控制器方法就需要发生变化, 返回结果应全部返回Result对象

@RestController
@RequestMapping("/books")
public class BookController {
    @Autowired
    private BookService bookService;

    @PostMapping
    public Result save(@RequestBody Book book) {
        boolean flag = bookService.save(book);
        return new Result(flag ? Code.SAVE_OK: Code.SAVE_ERR, flag);
    }

    @DeleteMapping("/{id}")
    public Result delete(@PathVariable Integer id) {
        boolean flag = bookService.delete(id);
        return new Result(flag ? Code.DELETE_OK: Code.DELETE_ERR, flag);
    }

    @PutMapping
    public Result update(@RequestBody Book book) {
        boolean flag = bookService.update(book);
        return new Result(flag ? Code.UPDATE_OK: Code.UPDATE_ERR, flag);
    }

    @GetMapping
    public Result selectAll() {
        List<Book> books = bookService.selectAll();
        boolean flag = books != null;
        Integer code = flag ? Code.SELECT_OK: Code.SELECT_ERR;
        String mes = flag ? "": "数据查询失败, 请重试!";
        return new Result(code, books, mes) ;
    }

    @GetMapping("/{id}")
    public Result selectById(@PathVariable Integer id) {
        Book book = bookService.selectById(id);
        boolean flag = book != null;
        Integer code = flag ? Code.SELECT_OK: Code.SELECT_ERR;
        String msg = flag ? "": "数据查询失败, 请重试!";
        return new Result(code, book, msg);
    }
}

到这里, 前端发送请求向后端获取的数据就是统一格式了

{
    "data": {
        "id": 2,
        "type": "测试修改",
        "name": "测试修改",
        "description": "测试修改"
    },
    "code": 20041,
    "msg": ""
}
举报

相关推荐

0 条评论