RESTful中的PUT和PATCH实践
2023-03-14 09:46:12 时间
先放上后台的在线API文档:SkyBlog Swagger API
在UserApi中,有这样三个接口
1. PUT /users/{id} 更新用户信息
2. PATCH /users/role/{id} 更新用户角色
3. PATCH /users/status/{id} 更新用户状态
在这三个接口便可以看出PUT和PATCH的区别
PUT方法主要是用来更新整个资源的,而PATCH方法主要是用来执行某项操作并更新资源的某些字段
而在项目中,这三个接口需要的用户权限也不一样
PUT /users/{id} 更新用户信息
要求是系统管理员、管理员或者是用户本人,才能使用该接口
/** * 更新用户信息 * @param id 用户ID * @param user 用户对象 * @return 更新后的用户 */ @PutMapping("/{id}") @ApiOperation("更新用户信息") @PreAuthorize("hasAnyRole('SYS_ADMIN','ADMIN') or #id == authentication.principal.id") @SysLog(resource = RESOURCE_USER,type = SysLogTypeEnum.UPDATE) public Result<UserDTO> updateUser(@ApiParam("用户ID") @PathVariable("id") @P("id") Integer id, @ApiParam("用户对象") @Valid @RequestBody UserDO user)
PATCH /users/role/{id} 更新用户角色
要求是系统管理员才能使用该接口
/** * 更新用户信息 * @param id 用户ID * @param user 用户对象 * @return 更新后的用户 */ @PutMapping("/{id}") @ApiOperation("更新用户信息") @PreAuthorize("hasAnyRole('SYS_ADMIN','ADMIN') or #id == authentication.principal.id") @SysLog(resource = RESOURCE_USER,type = SysLogTypeEnum.UPDATE) public Result<UserDTO> updateUser(@ApiParam("用户ID") @PathVariable("id") @P("id") Integer id, @ApiParam("用户对象") @Valid @RequestBody UserDO user)
PATCH /users/role/{id} 更新用户角色
要求是系统管理员才能使用该接口
/** * 更新用户角色 * @param id 用户ID * @param update 更新角色对象 * @return 结果对象 */ @PatchMapping("/role/{id}") @ApiOperation("更新用户角色") @PreAuthorize("hasRole('SYS_ADMIN')") @SysLog(resource = "用户权限",type = SysLogTypeEnum.UPDATE) public Result updateUserRole(@ApiParam("用户ID") @PathVariable("id")Integer id, @ApiParam("角色ID") @Valid @RequestBody UpdateRole update)
PATCH /users/status/{id} 更新用户状态
要求是系统管理员、管理员才能使用该接口
/** * 更新用户状态 * @param id 用户ID * @param update 更新状态对象 * @return 结果对象 */ @ApiOperation("更新用户状态") @PatchMapping("/status/{id}") @PreAuthorize("hasAnyRole('SYS_ADMIN','ADMIN')") @SysLog(resource = "用户状态",type = SysLogTypeEnum.UPDATE) public Result updateUserStatus(@ApiParam("角色ID") @PathVariable("id") Integer id, @ApiParam("状态ID") @Valid @RequestBody UpdateStatus update)
所以PUT和PATCH的使用场景,便可以在这三个接口中体现
相关文章
- wait与sleep的区别
- Ajax全接触-imooc
- 案例实践 | 某能源企业API安全实践
- Eclipse快捷键
- 常用的IDEA快捷键命令
- 引入分布式Id遇到的坑
- 在spring boot3中使用native image
- 关于Linux中网卡Teamd(分流容灾)的一些笔记
- R语言生态学:进化树推断物种分化历史:分类单元数与时间关系、支系图可视化
- 【视频】文本挖掘:主题模型(LDA)及R语言实现分析游记数据|附代码数据
- R语言中的时间序列分析模型:ARIMA-ARCH / GARCH模型分析股票价格|附代码数据
- Premiere Pro 23.1 版本 H.264 和 HEVC 或 H.265 文件导出不成功问题解决
- ICLR 2023 | 大规模文本图训练框架GLEM
- 李飞飞高徒教你从0到1构建GPT
- portraiture2023人像磨皮软件功能特点
- Tuxera NTFS2023Mac驱动读写工具
- 软件下载ae2022 AE 2021安装教程 ae2022 AE苹果下载
- pycharm激活码永久 2023最新有效pycharm激活方法
- 广域铭岛获工业互联网标识注册服务许可
- 【文字识别】基于腾讯AI识别车牌号码,轻松写一个停车场管理系统,YYDS