Springboot中增删改查类的restful风格(以用户操作为例)

文章介绍了如何在SpringBoot中使用RESTful风格来设计API,包括新增用户、删除用户、查询用户和扣减用户余额等操作。RESTful风格具有统一接口、无状态性、缓存友好、分层系统、可扩展性和安全性等优点。

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

作者简介:大家好,我是 Meteors., 向往着更加简洁高效的代码写法与编程方式,持续分享Java技术内容。
🍎个人主页:Meteors.的博客
💞当前专栏:知识备份
特色专栏: 知识分享
🥭本文内容:Springboot中增删改查类的restful风格(以用户操作为例)
📚 ** ps **  : 阅读文章如果有问题或者疑惑,欢迎在评论区提问或指出。


目录

一. 简介 

二. 具体例子

三. Restful风格的优点


一. 简介 

    在Spring Boot中,RESTful风格的API是处理Web服务请求的常用方式。RESTful风格是基于HTTP协议的一种Web服务设计方式,它强调使用统一的资源标识符(URI)来标识资源,并通过HTTP方法(如GET、POST、PUT、DELETE等)来对资源进行操作。

二. 具体例子

需求:使用基于Restful风格实现下面的接口:

编号接口请求方式请求路径请求参数返回值
1新增用户POST/users用户表单实体
2删除用户DELETE/user/{id}用户id
3根据id查询用户GET/user/{id}用户id用户V0
4根据id批量查询GET/users用户id集合用户V0集合
5根据id扣减余额PUT/users/{id}/deduction
  • 用户id
  • 扣减金额
  1. 新增用户接口
    @ApiOperation("新增用户接口")
    @PostMapping
    public void saveUser(@RequestBody UserFormDTO userDTO){
        // 1. 把DTO拷贝到PO;
        User user = BeanUtil.copyProperties(userDTO,User.class);
        // 2. 新增
        userService.save(user);
    }
  2. 删除用户接口
    @ApiOperation("删除用户接口")
    @DeleteMapping("{id}")
    public void deleteUserById(@ApiParam("用户id") @PathVariable("id") Long id){
        userService.removeById(id);
    }
  3. 根据id查询用户
    @ApiOperation("根据id查询用户接口")
    @GetMapping("{id}")
    public UserVO queryUserById(@ApiParam("用户id") @PathVariable("id") Long id){
        // 1. 查询用户PO
        User user = userService.getById(id);
        // 2. 把PO拷贝到VO
        return BeanUtil.copyProperties(user,UserVO.class);
    }
    
  4. 根据id批量查询用户接口
    @ApiOperation("根据id批量查询用户接口")
    @GetMapping
    public List<UserVo> queryUserByIds(@ApiParam("用户id集合") @RequestParam("ids") List<Long> ids){
        // 1. 查询用户PO
        List<User> users = userService.listByIds(ids);
        // 2. 把PO拷贝到VO
        return BeanUtil.copyToList(users,UserVo.class);
    }
  5. 扣减用户余额
    // Service层
    @ApiOperation("扣减用户余额接口")
    @PutMapping("/{id}/deduction/{money}")
    public void duductBalance(
            @ApiParam("用户id") @PathVariable("id") Long id,
            @ApiParam("扣减的金额") @PathVariable("money") Integer money){
        userService.deductBalance(id,money);
    
    }
    
    // Impl
    @Ocerride
    public void deductBalance(Long id,Intefer money){
        // 1. 查询用户
        User user = getById(id);
        // 2. 校验用户状态
        if(user == null || user.getStatus() == 2){
            throw new RuntimeException("用户状态异常!");
        }
        // 3. 校验余额是否充足
        if(user.getBalance() < money){
            throw new RuntimeException("用户余额不足");
        }
        // 4. 扣减余额 
        baseMapper.deductBalance(id,money);
    }
    
    // Mapper层
    @Update("UPDATE tb_user SET balacne = balance - #{money} WHERE id = #{id}")
    void deductBalance(@Param("id") Long id,@Param("money")Integer money);
    
    

 三. Restful风格的优点

  • 统一接口:RESTful风格提供了一组统一的接口,使得客户端和服务器之间的交互变得简单和一致。
  • 无状态性:RESTful API是无状态的,这意味着每个请求都是独立的,服务器不保留任何关于客户端的上下文信息。这有助于提高系统的可扩展性和可靠性。
  • 缓存友好:RESTful API使用了HTTP缓存机制,这有助于减少网络传输的数据量,提高系统的响应速度。
  • 分层系统:RESTful风格鼓励使用分层系统设计,这有助于降低系统的复杂性,提高系统的可维护性。
  • 可扩展性:RESTful API可以很容易地与各种前端技术(如Web、移动应用等)集成,从而实现跨平台的数据交互。
  • 安全性:RESTful API可以支持HTTPS协议,提供数据加密和身份验证等安全措施,保护数据的机密性和完整性。
  • 易于测试:由于RESTful API的接口是统一的,因此可以更容易地编写自动化测试脚本来验证API的功能和性能。

 最后,

        希望文章对你有所帮助!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值