【基于springboot的SSMP整合案例1】表现层开发及使用postman测试3

1. 基于Restful制作表现层接口

咱们表现层的开发使用基于Restful的表现层接口开发功能测试通过Postman工具进行。
Restful在之前的blog有介绍过,不熟悉的小伙伴可以回头找相关知识进行补充,postman是一个接口的测试工具,这里也不做过多解释,直接使用。

BookController

  1. PUT请求传递json数据,后台实用@RequestBody接收数据
  2. GET请求传递路径变量,后台实用@PathVariable接收数据
@RestController
@RequestMapping("/books")
public class BookController2 {

    @Resource
    private IBookService bookService;

    @GetMapping
    public List<Book> getAll(){
        return bookService.list();
    }

    @GetMapping("/{id}")
    public Book testGetById(@PathVariable int id){
        Book book = bookService.getById(id);
        return book;
    }

    @PutMapping
    public boolean update(@RequestBody Book book){
        return bookService.updateById(book);
    }

    @DeleteMapping("/{id}")
    public boolean delete(@PathVariable int id){
        return bookService.removeById(id);
    }

    @PostMapping
    public boolean insert(@RequestBody Book book){
        return bookService.save(book);
    }

    @GetMapping("{currentPage}/{pageSize}")
    public IPage<Book> testPage(@PathVariable int currentPage,@PathVariable int pageSize){
        return bookService.getPage(currentPage,pageSize);
    }
}

2. 使用postman进行接口测试

接下来我们通过postman进行接口测试

  1. 查询全部,查询都是通过Get请求
    在这里插入图片描述

  2. 新增测试:POST请求
    新增的数据是通过JSON数据格式进行添加
    在这里插入图片描述

  3. 更新测试:PUT请求
    在这里插入图片描述

  4. 删除测试: DELETE请求
    在这里插入图片描述

  5. 分页请求: GET请求
    在这里插入图片描述

3. 表现层消息一致性处理(重要)

目前我们通过Postman测试后业务层接口功能是通的,但是这样的结果给到前端开发者会出现一个小问题。不同的操作结果所展示的数据格式差异化严重
比如上述测试,增删改返回值是true,id查询结果返回实体类对象,查询全部返回集合,这样的结果让前端人员看了是很容易让人崩溃的,必须将所有操作的操作结果数据格式统一起来,需要设计表现层返回结果的模型类,用于后端与前端进行数据格式统一,也称为前后端数据协议

3.1 创建结果集实体类R

创建实体类R,并编写构造方法。

@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;
    }
}

3.2 修改表现层接口

@RestController
@RequestMapping("/books")
public class BookController {

    @Resource
    private IBookService bookService;

    @GetMapping
    public R getAll() {
        /*R r = new R();
        List<Book> list = bookService.list();
        r.setFlag(true);
        r.setData(list);*/

        //凡是查询,flag统一设置成true
        return new R(true, bookService.list());
    }

    @GetMapping("/{id}")
    public R testGetById(@PathVariable int id) {
        return new R(true, bookService.getById(id));
    }

   /* @GetMapping("{currentPage}/{pageSize}")
    public R testPage(@PathVariable int currentPage, @PathVariable int pageSize) {
        IPage<Book> page = bookService.getPage(currentPage, pageSize);
        if(currentPage > page.getPages()){
            //如果当前页码大于总页码,重新查询一遍
            //加int强转是因为getPages返回long型,然后将getPage里面的参数currentPage换成page.getPages()
            page = bookService.getPage((int)page.getPages(), pageSize);
        }
        return new R(true,page);
        //return new R(true, bookService.getPage(currentPage, pageSize));
    }*/
    @GetMapping("{currentPage}/{pageSize}")
    public R testPage(@PathVariable int currentPage, @PathVariable int pageSize,Book book) {
        IPage<Book> page = bookService.getPage(currentPage, pageSize,book);
        if(currentPage > page.getPages()){
            //如果当前页码大于总页码,重新查询一遍
            //加int强转是因为getPages返回long型,然后将getPage里面的参数currentPage换成page.getPages()
            page = bookService.getPage((int)page.getPages(), pageSize,book);
        }
        return new R(true,page);
    }

    @PutMapping
    public R update(@RequestBody Book book) {
        return new R(bookService.updateById(book));
    }

    @DeleteMapping("/{id}")
    public R delete(@PathVariable int id) {
        return new R(bookService.deleteById(id));
    }

    @PostMapping
    public R insert(@RequestBody Book book) throws Exception {

        if (book.getName().equals("123")) throw new Exception();

        boolean flag = bookService.save(book);
        //return new R(bookService.save(book));
        return new R(flag, flag ? "添加成功^_^" : "添加失败");
    }
}

3.3 使用postman进行接口测试

我们简单测试几个,看看数据集的封装情况
根据id查询
在这里插入图片描述
新增请求
在这里插入图片描述
通过上面接口的测试结果,可以看出,我们查询出来的数据集都已经封装,现在后端发送给前端的数据格式就统一了,免去了不少前端解析数据的麻烦。

总结:

  1. 设计统一的返回值结果类型便于前端开发读取数据

  2. 返回值结果类型可以根据需求自行设定,没有固定格式

  3. 返回值结果模型类用于后端与前端进行数据格式统一,也称为前后端数据协议

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面为您介绍一个简单的Spring Boot + Mybatis Plus(SSMP)整合案例。 1. 首先,在pom.xml文件中添加以下依赖: ```xml <!--Spring Boot 依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--Mybatis Plus 依赖--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>${mybatis-plus.version}</version> </dependency> <!--MySQL 驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.version}</version> </dependency> ``` 2. 在application.properties中配置数据源: ```properties # 数据库配置 spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus?useUnicode=true&characterEncoding=utf-8&useSSL=false spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.jdbc.Driver ``` 3. 创建一个实体类User,用于映射数据库中的user表: ```java @Data public class User { private Long id; private String name; private Integer age; private String email; } ``` 4. 创建UserMapper接口,用于定义数据库操作: ```java public interface UserMapper extends BaseMapper<User> { } ``` 5. 创建UserService类,用于定义业务逻辑: ```java @Service public class UserService { @Autowired private UserMapper userMapper; public List<User> selectList() { return userMapper.selectList(null); } public User selectById(Long id) { return userMapper.selectById(id); } public int insert(User user) { return userMapper.insert(user); } public int update(User user) { return userMapper.updateById(user); } public int delete(Long id) { return userMapper.deleteById(id); } } ``` 6. 创建UserController类,用于处理HTTP请求: ```java @RestController @RequestMapping("/user") public class UserController { @Autowired private UserService userService; @GetMapping("/list") public List<User> selectList() { return userService.selectList(); } @GetMapping("/{id}") public User selectById(@PathVariable Long id) { return userService.selectById(id); } @PostMapping public int insert(@RequestBody User user) { return userService.insert(user); } @PutMapping public int update(@RequestBody User user) { return userService.update(user); } @DeleteMapping("/{id}") public int delete(@PathVariable Long id) { return userService.delete(id); } } ``` 7. 启动应用程序,访问http://localhost:8080/user/list可以获取所有用户的列表,访问http://localhost:8080/user/1可以获取id为1的用户的详细信息。 以上就是一个简单的Spring Boot + Mybatis Plus(SSMP)整合案例,希望能帮助到您。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值