先放上后台的在线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的使用场景,便可以在这三个接口中体现

最新文章

  1. HTTP状态码对应
  2. 跳转到下一个activity
  3. css3 文字轮番滚动效果2——改进版
  4. 使用RedisTemplate进行Redis存取的工具类设计
  5. 准备熟悉Kaggle -菜鸟进阶
  6. 1046: 最小的K个数
  7. docker中清理冗余的image,container
  8. 分享Kali Linux 2016.2最新镜像201609
  9. windows跟linux文件共享
  10. Unit Test Generator
  11. CSS-Sprite-Generator丨CSS雪碧在线生成器
  12. Redis事务和分布式锁
  13. Scala分号推断
  14. Ubuntu配置Samba
  15. GitHub入门与实践 读书笔记二:Git的导入
  16. Libp2p学习(一)
  17. 三角函数 与 JavaScript
  18. httpwebrequest详解
  19. 模拟IDE上的run过程
  20. EasyUI Tree checkbox node

热门文章

  1. 【vue开发】watch中的immediate与deep的使用
  2. Android 之 SimpleAdapter 学习笔记
  3. C#委托的学习了解
  4. django-自定义用户登录(个人笔记)
  5. linux系统调用号查询(pwn)
  6. malloc函数详解 glibc2.27
  7. mariadb_2 单表的增删改查
  8. Day05_22_实例化对象的JVM内存分析
  9. Socket简介 与 UDP
  10. new word