springboot中http的get post put delete请求

本文详细介绍了HTTP中GET、POST、PUT和DELETE方法的使用场景和特性,特别是POST和PUT的幂等性差异。GET用于获取资源,POST用于创建资源,PUT用于替换资源,具有幂等性,而POST不幂等。在实际应用中,PUT常用于更新资源,POST用于新增。此外,GET和POST在参数传递、缓存、历史记录、数据包发送等方面也有不同。HTTP规范建议,对同一资源进行多次相同请求,PUT始终返回相同结果,而POST可能会产生不同的效果。
组合注解(RequestMapping的变形)

@GetMapping = @RequestMapping(method = RequestMethod.GET)
@PostMapping = @RequestMapping(method = RequestMethod.POST)
@PutMapping = @RequestMapping(method = RequestMethod.PUT)
@DeleteMapping = @RequestMapping(method = RequestMethod.DELETE

1、PUT和POST

PUT和POST都有更改指定URI的语义.但PUT被定义为idempotent的方法,POST则不是.idempotent的方法:如果一个方法重复执行

多次,产生的效果是一样的,那就是idempotent的。也就是说:

PUT请求:如果两个请求相同,后一个请求会把第一个请求覆盖掉。(所以PUT用来改资源)

Post请求:后一个请求不会把第一个请求覆盖掉。(所以Post用来增资源)

2、get和post

1、GET参数通过URL传递,POST放在Request body中。

2、GET请求会被浏览器主动cache,而POST不会,除非手动设置。

3、GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。

4、Get 请求中有非 ASCII 字符,会在请求之前进行转码,POST不用,因为POST在Request body中,通过 MIME,也就可以传输非 ASCII 字符。

5、 一般我们在浏览器输入一个网址访问网站都是GET请求

6、HTTP的底层是TCP/IP。HTTP只是个行为准则,而TCP才是GET和POST怎么实现的基本。GET/POST都是TCP链接。GET和POST能做的事情是一样一样的。但是请求的数据量太大对浏览器和服务器都是很大负担。所以业界有了不成文规定,(大多数)浏览器通常都会限制url长度在2K个字节,而(大多数)服务器最多处理64K大小的url。

7、GET产生一个TCP数据包;POST产生两个TCP数据包。对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

8、在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。但并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。

HTTP中GET,POST和PUT的区别 - 简书


在请求Controller的过程中,@PostMapping和@PutMapping在用法上几乎没有区别,都可以将请

求参数传递到Controller方法中,但是二者存在本质上的区别:

引入概念:幂等性(idempotent),简单来说就是多次访问对rest服务产生的结果不会有改变。

http协议明确规定,put、get与delete请求都是具有幂等性的,而post为非幂等性请求,就是说接口

被定义为post请求可访问时,说明这个接口对数据库的影响是非幂等性的。所以一般插入新数据

时,用post方法,更新数据库时,用put方法,以此类推@PostMapping注解是标示接口为非幂等

性接口,@PutMapping注解是标示接口为幂等性接口。

SpringBoot-@PostMapping与@PutMapping注解的区别_卡卡罗特cimi的博客-优快云博客_putmapping注解


REST模式:POST,GET,PUT,DELETE,PATCH的含义与区别 - 知乎 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZHOU_VIP

您的鼓励将是我创作最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值