当前位置:网站首页>@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就知道结果如何
边栏推荐
猜你喜欢
js基础知识整理之 —— 获取元素和命名规范
APT级全面免杀拿Shell
2022第十一届财经峰会:优炫软件斩获双项大奖
漫画:怎么证明sleep不释放锁,而wait释放锁?
2022暑假牛客多校1 (A/G/D/I)
华为设备配置BFD与接口联动(触发与BFD联动的接口物理状态变为Down)
No-code development platform form styling steps introductory course
CAS:1445723-73-8,DSPE-PEG-NHS,磷脂-聚乙二醇-活性酯两亲性脂质PEG共轭物
语音合成模型小抄(1)
Apache Doris 1.1 特性揭秘:Flink 实时写入如何兼顾高吞吐和低延时
随机推荐
最近公共祖先(LCA)学习笔记 | P3379 【模板】最近公共祖先(LCA)题解
js基础知识整理之 —— 变量和数据类型
VMware workstation 程序启动慢
脂溶性胆固醇-聚乙二醇-叠氮,Cholesterol-PEG-Azide,CLS-PEG-N3
Jmeter二次开发实现rsa加密
js基础知识整理之 —— 闭包
智能电视竞争白热化,利用小程序共建生态突围
Day117.尚医通:生成挂号订单模块
Based on two levels of decomposition and the length of the memory network multi-step combined forecasting model of short-term wind speed
停止使用 Storyboards 和 Interface Builder
KubeSphere监控失效为NAN的问题
Mock工具之Moco使用教程
No-code development platform form styling steps introductory course
高数---二重积分
无代码开发平台数据ID入门教程
基于两级分解和长短时记忆网络的短期风速多步组合预测模型
Canonical correlation analysis of CCA calculation process
简单聊聊MySQL中的六种日志
我为什么又能面试一次就拿到offer
执子手,到永恒