当前位置:网站首页>@GetMapping、@PostMapping、@PutMapping、@DeleteMapping的区别
@GetMapping、@PostMapping、@PutMapping、@DeleteMapping的区别
2022-08-02 22:57:00 【young_man2】
Spring4.3中引进了{@GetMapping、@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping} 来帮助简化常用的HTTP方法的映射 并更好地表达被注解方法的语义,至于@PatchMapping可以暂时不用管,Patch方式是对put方式的一种补充,put方式是可以更新.但是更新的是整体.patch是对局部更新;
@GetMapping: 处理get请求,传统的RequestMapping来编写应该是@RequestMapping(value = “/get/{id}”, method = RequestMethod.GET) 新方法可以简写为: @GetMapping("/get/{id}");
@PostMapping:处理post请求,传统的使用RequestMapping来编写同上;
@PutMapping:它的使用方法与PostMapping几乎是一样的,没什么区别,都可以将参数传递到Controller中,但是他们本质上区别很大,在这里我需要引入一个概念-----------幂等性:HTTP/1.1中的定义是指一次和多次请求某一个资源对于资源本身应该具有同样的结果(网络超时等问题除外)。也就是说,其任意多次执行对资源本身所产生的影响均与一次执行的影响相同,
这里需要关注几个重点:
幂等不仅仅只是一次(或多次)请求对资源没有副作用(比如查询数据库操作,没有增删改,因此没有对数据库有任何影响)。
幂等还包括第一次请求的时候对资源产生了副作用,但是以后的多次请求都不会再对资源产生副作用。
幂等关注的是以后的多次请求是否对资源产生的副作用,而不关注结果。
网络超时等问题,不是幂等的讨论范围。
幂等性是系统服务对外一种承诺(而不是实现),承诺只要调用接口成功,外部多次调用对系统的影响是一致的。声明为幂等的服务会认为外部调用失败是常态,并且失败之后必然会有重试。
以SQL为例,有下面三种场景,只有第三种场景需要开发人员使用其他策略保证幂等性:
1、SELECT col1 FROM tab1 WHER col2=2,无论执行多少次都不会改变状态,是天然的幂等。
2、UPDATE tab1 SET col1=1 WHERE col2=2,无论执行成功多少次状态都是一致的,因此也是幂等操作。
3、UPDATE tab1 SET col1=col1+1 WHERE col2=2,每次执行的结果都会发生变化,这种不是幂等的。
复制代码
简单来说就是多次访问对rest服务产生的结果不会有改变。
http协议明确规定,put、get与delete请求都是具有幂等性的,而post为非幂等性请求,就是说接口被定义为post请求可访问时,说明这个接口对数据库的影响是非幂等性的。所以一般插入新数据时,用post方法,更新数据库时,用put方法,以此类推@PostMapping注解是标示接口为非幂等性接口,@PutMapping注解是标示接口为幂等性接口。
@DeleteMapping 删除URL映射
@DeleteMapping("candidateAssess/{id}") public ResponseResult deleteCandidateAssess(@PathVariable String id) { candidateAssessService.deleteCandidateAssess(id); return new ResponseResult("删除成功", 200); }
至于上面提到的rest服务,感兴趣的可以自己查一查,对于rest服务经过查阅资料,觉得最精辟的解释就是:
看Url就知道要什么 看http method就知道干什么 看http status code就知道结果如何
边栏推荐
- 2022第十一届财经峰会:优炫软件斩获双项大奖
- Speech Synthesis Model Cheat Sheet (1)
- mysql根据多字段分组——group by带两个或多个参数
- HCIP(16)
- 用了TCP协议,就一定不会丢包吗?
- Technology Sharing | How to do assertion verification for xml format in interface automation testing?
- Controller层代码这么写,简洁又优雅!
- No-code development platform form styling steps introductory course
- CAS:474922-22-0,DSPE-PEG-MAL,磷脂-聚乙二醇-马来酰亚胺科研试剂供应
- js基础知识整理之 —— Math
猜你喜欢
随机推荐
The latest real software test interview questions are shared. Are you afraid that you will not be able to enter the big factory after collecting them?
js基础知识整理之 —— 获取元素和命名规范
CWE4.8:2022年危害最大的25种软件安全问题
markdown语法
非关系型数据库MongoDB简介和部署
airflow db init 报错
21天学习挑战赛(1)设备树的由来
HCIP(16)
D experimental new anomaly
CKAN教程之将 Snowflake 连接到 CKAN 以发布到开放数据门户
Controller层代码这么写,简洁又优雅!
centos7安装mysql8
Let's talk about the charm of code language
别再到处乱放配置文件了!我司使用 7 年的这套解决方案,稳的一秕
d实验新异常
today‘s task
Directing a non-relational database introduction and deployment
Week 7 - Distributional Representations(分布表示)
基于飞腾平台的嵌入式解决方案案例集 1.0 正式发布!
1 - vector R language self-study