SpringBoot 基础篇
文章目录
- SpringBoot
- SpringBoot 基础篇
- 4 基于 SpringBoot 的SSMP 整合案例
- 4.11 表现层数据一致性处理【R对象】
- 4.11.1 问题引入
- 4.11.2 实现前后端数据协议
- 4.11.3 小结
4 基于 SpringBoot 的SSMP 整合案例
4.11 表现层数据一致性处理【R对象】
4.11.1 问题引入
之前我们其实已经实现了表现层接口,但是有个痛点
我增删改的时候返回true/false
查单条返回一条json 数据
查全部的时候返回一个json 数据【“前端”痛点】
【第一步】
都去data 中取数据,这样封装问题又来了
某一次咱们查了一个id 不存在的数据
这个时候就意义冲突了
这个null 就出现了歧义【到底是查不到数据,还是服务器的问题】
【第二步】加个flag
意思就是咱们得把controller 里面的返回结果统一格式
→ 设计表现层返回结果的模型类,用于后端与前端进行数据格式统一,也称为前后端数据协议
4.11.2 实现前后端数据协议
package com.dingjiaxiong.controller.utils;
import lombok.Data;
/**
* ClassName: R
* date: 2022/10/17 20:43
*
* @author DingJiaxiong
*/
@Data
public class R {
private Boolean flag;
private Object data;
public R() {
}
public R(Boolean flag) {
this.flag = flag;
}
public R(Boolean flag, Object data) {
this.flag = flag;
this.data = data;
}
}
修改controller
package com.dingjiaxiong.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.dingjiaxiong.controller.utils.R;
import com.dingjiaxiong.domain.Book;
import com.dingjiaxiong.service.IBookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* ClassName: BookController
* date: 2022/10/17 20:12
*
* @author DingJiaxiong
*/
@RestController
@RequestMapping("/books")
public class BookController {
@Autowired
private IBookService bookService;
@GetMapping
public R getAll(){
return new R(true,bookService.list());
}
@PostMapping
public R save(@RequestBody Book book){
return new R(bookService.save(book));
}
@PutMapping
public R update(@RequestBody Book book){
return new R(bookService.updateById(book));
}
@DeleteMapping("/{id}")
public R delete(@PathVariable Integer id){
return new R(bookService.removeById(id));
}
@GetMapping("/{id}")
public R getById(@PathVariable Integer id){
return new R(true,bookService.getById(id));
}
@GetMapping("/{currentPage}/{pageSize}")
public R getPage(@PathVariable int currentPage ,@PathVariable int pageSize){
return new R(true,bookService.getPage(currentPage, pageSize));
}
}
直接重启服务器,开测
查询全部
查询单个
查询一个不存在的
新增
修改
删除
OK,就是这样
小结一下
- 设计表现层返回结果的模型类,用于后端与前端进行数据格式统一,也称为前后端数据协议
- 表现层接口统一返回值类型结果
4.11.3 小结
- 设计统一的返回值结果类型便于前端开发读取数据
- 返回值结果类型可以根据需求自行设定,没有固定格式
- 返回值结果模型类用于后端与前端进行数据格式统一,也称为前后端数据协议