RESTful中的PUT和PATCH实践
先放上后台的在线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的使用场景,便可以在这三个接口中体现
RESTful中的PUT和PATCH实践的更多相关文章
- restful api的10个最佳实践
Web API在过去的几年里非常盛行,因为它有着语法简单.规范化和轻量级的优点,因为得到广泛的推崇,很多过往的技术手段都慢慢转换为使用Web API来开发.而Web API通常使用的设计方式是REST ...
- 在objc项目中使用常量的最佳实践
在objc项目中使用常量的最佳实践 之前,在在objc项目中使用常量中,使用c的预处理#define来设置常量.比如,可以做个头文件,然后在需要的类文件中import,使用常量. 但这不是最佳实践 ...
- Android中保存静态秘钥实践(转)
本文我们将讲解一个Android产品研发中可能会碰到的一个问题:如何在App中保存静态秘钥以及保证其安全性.许多的移动app需要在app端保存一些静态字符串常量,其可能是静态秘钥.第三方appId等. ...
- RESTFul中的那些事(1)---在RESTFul中,HTTP Put和Patch操作的差别?
笔者在用调用Google Calendar和Google Tasks的RESTFul API的时候.遇到了一个特殊的操作,PATCH. 那么PATCH操作和PUT操作的差别是什么呢? 依据PATCH ...
- RESTFul中的那些事(2)----怎样支持RESTFul的HTTP Patch方法?
我们在调用RESTFul服务的时候,有的时候.第三方的服务会提供支持PATCH 操作的方法,在这样的情况下.我们假设我们以下的这样的方式, 去调用PATCH操作.肯定会返回40X的错误. PATCH ...
- 10个有关RESTful API良好设计的最佳实践
Web API已经在最近几年变成重要的话题,一个干净的API设计对于后端系统是非常重要的. 通常我们为Web API使用RESTful设计,REST概念分离了API结构和逻辑资源,通过Http方法GE ...
- [转]10个有关RESTful API良好设计的最佳实践
Web API已经在最近几年变成重要的话题,一个干净的API设计对于后端系统是非常重要的. 通常我们为Web API使用RESTful设计,REST概念分离了API结构和逻辑资源,通过Http方法GE ...
- 10个有关RESTful API良好设计的最佳实践(转)
原文地址:http://www.jdon.com/soa/10-best-practices-for-better-restful-api.html Web API已经在最近几年变成重要的话题,一个干 ...
- iOS 学习 RESTful 中 Http 的幂等性
一. RESTful RESTful (Representational State Transfer) 是一种常用流行的软件架构,设计风格或协议标准.提供了一组设计风格和约束条件.主要用于客户端和 ...
随机推荐
- 社区 正式发布了 CoreWCF 0.1.0 GA
CoreWCF 项目在2021.2.19 正式发布了0.1.0 GA版本:https://github.com/CoreWCF/CoreWCF/releases/tag/v0.1.0 ,这个版本号虽然 ...
- python graphviz的使用(画图工具)
参考文章1 参考文章2 一.graphviz安装及配置 graphviz实际上是一个绘图工具,可以根据dot脚本画出树形图等. 1.windows安装 安装graphviz软件:https://gra ...
- css实现一个电影卡片
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...
- 第一个win32程序
vs2017下自动创建的窗口程序 // win_test.cpp : 定义应用程序的入口点. // #include "framework.h" #include "wi ...
- 【Linux学习笔记1】-centos6.9部署django
一,centos6.9部署django 部署套件:centos6.9+nginx+mysql+uwsgi+python3+django 首先还是要明白这几个部分之间的关系(自己也是初学者,希望 ...
- Android Studio 安装及配置
安装时的那些事 •相关链接 [1]:无需翻墙的链接 [2]:Android Studio 安装教程 •从安装到放弃??? 初次接触 Android,并知道了开发 Android APP 的软件--An ...
- 【洛谷】P1294 高手去散步
题目背景 高手最近谈恋爱了.不过是单相思."即使是单相思,也是完整的爱情",高手从未放弃对它的追求.今天,这个阳光明媚的早晨,太阳从西边缓缓升起.于是它找到高手,希望在晨读开始之前 ...
- java面试-强引用、软引用、弱引用和幻象引用有什么区别
在Java语言中,除了基本数据类型外,其他的都是指向各类对象的对象引用:Java中根据其生命周期的长短,将引用分为4类. 不同的引用类型,主要体现的是对象不同的可达性状态和对垃圾收集的影响. 1 .强 ...
- Element源码:项目初始化和webpack配置
0x00.项目初始化 由于整个过程像素级 copy element,所以将不使用vue-cli初始化项目. 创建项目 新建一个空的文件夹,使用npm init 来初始化项目,并安装vue模块. 修改目 ...
- Dynamic CRM登陆界面的客制化(持续更新)
Dynamic CRM的登陆页面比较西化,不是很适合中国人使用.目前先把注销跳转的问题解决了. 服务端使用下面命令,将文件导出来 Export-AdfsWebTheme –Name default – ...