SpringBoot结合MP和Restful开发案例

本文介绍了RESTful开发的概念,强调了URI设计和HTTP动词的重要性。通过一个SpringBoot+Mybatis-Plus的示例,展示了如何创建RESTful API,包括增删查改操作,并提供了Postman测试请求的截图。此外,还分享了一个用于封装后端返回数据的工具类R。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是Restful开发?

原来的参数请求方式: /login?name=jack

rest参数请求:/login/jack

REST是面向资源的,而资源是通过URI进行暴露,URI的设计只要负责把资源通过合理方式暴露出来就可以了。对资源的操作与它无关,操作是通过HTTP动词来体现,所以REST通过URI暴露资源时,会强调不要在URI中出现动词。所以应该使用请求方式来代表操作类型的不同,而资源路径不要作出改变!

比如:左边的是错误的设计,而右边是正确的

GET /rest/api/getDogs --> GET /rest/api/dogs 获取所有小狗狗

GET /rest/api/addDogs --> POST /rest/api/dogs 添加一个小狗狗

GET /rest/api/editDogs/:dog_id --> PUT /rest/api/dogs/:dog_id 修改一个小狗狗

GET /rest/api/deleteDogs/:dog_id --> DELETE /rest/api/dogs/:dog_id 删除一个小狗狗

前言

以下文章是个人做的学习笔记,希望可以帮助到有学习这方面知识的小伙伴,如有帮助欢迎,点赞、收藏、关注哦^_^

Springboot+MP结合Restful开发步骤

1、实体类,这里使用了Lombok注解,自动生成getter和setter方法,还有全参和无参构造方法

 @Data
 @AllArgsConstructor
 @NoArgsConstructor
 @TableName("users")
 public class User {
     private int id;
     private String uname;
     private String code;
     private String password;
 ​
 ​
 }

2、Dao层(继承了Mybatis-plus提供的BaseMapper接口)

 @Mapper
 public interface UserDao extends BaseMapper<User> {
 }

3、Service接口和实现类(继承了Mybatis-plus提供的IService<T>接口)

 //接口
 public interface IUserService extends IService<User> {
 }
 ​
 //实现类
 @Service
 public class UserServiceImp extends ServiceImpl<UserDao, User> implements IUserService {
 }

4、编写工具类R,用于封装后端返回给前端的数据格式

 @Data
 //该类为工具类,用于封装后端返回到前端的数据
 public class R {
     //status代表请求成功与否
     private boolean status;
     //用户存储后端返回过来的数据
     private Object data;
     //返回前端消息,如:“添加成功”,“服务器出错”
     private String message;
     public R(){}
     public R(boolean status,Object data){
         this.status = status;
         this.data = data;
     }
     public R(boolean status, String message){
         this.status = status;
         this.message = message;
     }
     public R(boolean status, Object data,String message){
         this.status = status;
         this.data = data;
         this.message = message;
     }
 }
 

5、Controller层

 @RestController
 @RequestMapping("/user")
 public class UserController {
     @Autowired
     private IUserService iUserService;
 ​
     @GetMapping
     //获取所有用户信息
     public R getAll(){
         List<User> list = iUserService.list();
         return new R(true,list);
     }
 ​
     //根据用户名和密码查询
     @GetMapping("{code}/{password}")
     public R getUserById(@PathVariable String code, @PathVariable String password){
         QueryWrapper<User> qw = new QueryWrapper<>();
         qw.eq("code", code).eq("password", password);
         User one = iUserService.getOne(qw);
         return new R(true,one,"添加成功");
     }
 ​
     //分页查询用户(page/当前页/页面大小)
     @GetMapping("page/{current}/{size}")
     public R pageList(@PathVariable String current, @PathVariable String size){
         IPage<User> iPage = new Page(Integer.valueOf(current),Integer.valueOf(size));
         List<User> records = iUserService.page(iPage).getRecords();
         System.out.println(iPage.getTotal());
         System.out.println(iPage.getPages());
         return new R(true,records);
     }
 ​
     //添加用户
     @PostMapping
     public R addUser(@RequestBody User user){
         return new R( iUserService.save(user),null);
     }
 ​
     //修改用户
     @PutMapping
     public R updateUser(@RequestBody User user){
         return new R(iUserService.updateById(user),null);
     }
 ​
     //根据Id删除用户
     @DeleteMapping("{id}")
     public R delete(@PathVariable int id){
         QueryWrapper<User> qw = new QueryWrapper<>();
         qw.eq("id", id);
         boolean remove = iUserService.remove(qw);
         return new R(remove,remove?"删除成功^_^":"删除失败-_-");
     }
 ​
 }

以下使用Postman软件模拟请求,测试写好的业务代码

  • 测试Get方法查询所有用户信息


 

  • 使用Get方式分页查询用户信息(查询第一页,每页显示2条数据)


 

  • 使用Get方法条件查询用户信息(根据用户名和密码查询)


 

  • 使用Post请求添加用户信息


 

  • 使用Delete请求方式,删除一条用户信息

    情况1:删除失败

 情况2:删除成功

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值