✅作者简介:大家好,我是 Meteors., 向往着更加简洁高效的代码写法与编程方式,持续分享Java技术内容。
🍎个人主页:Meteors.的博客
💞当前专栏:知识备份
✨特色专栏: 知识分享
🥭本文内容:Springboot中增删改查类的restful风格(以用户操作为例)
📚 ** ps ** : 阅读文章如果有问题或者疑惑,欢迎在评论区提问或指出。
目录
一. 简介
在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 |
| 无 |
- 新增用户接口
@ApiOperation("新增用户接口") @PostMapping public void saveUser(@RequestBody UserFormDTO userDTO){ // 1. 把DTO拷贝到PO; User user = BeanUtil.copyProperties(userDTO,User.class); // 2. 新增 userService.save(user); }
- 删除用户接口
@ApiOperation("删除用户接口") @DeleteMapping("{id}") public void deleteUserById(@ApiParam("用户id") @PathVariable("id") Long id){ userService.removeById(id); }
- 根据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); }
- 根据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); }
- 扣减用户余额
// 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的功能和性能。
最后,
希望文章对你有所帮助!