HTTP请求方法有哪些?

![[Recording 20241024094639.webm]]
GET: 从服务器获取资源,包括图片,网页,视频等
POST:向服务器提交上传资源,发送一些数据,在服务器端创建新的资源
PUT:向服务器更新现有数据
HEAD:与GET类似,但是只获取响应头部,也就是判断该资源是否存在
DELETE:向服务器删除资源
PATCH:和PUT类似,但是只更新部分资源
OPTIONS:获取服务器支持的HTTP请求方法

GET和POST的区别是什么?

![[Recording 20241024094844.webm]]
GET是获取资源,post是提交资源
GET是客户端向服务器获取指定的资源,请求的参数会放在URL中,由于浏览器一般会对URL的长度有限制,所有GET的请求参数最多只有2048字符,GET的请求报文是没有请求体的。并且GET是一个幂等性的请求,即发送多次该请求获得的结果都是一样的
POST是客户端向服务器发送请求体中的数据并在服务器端建立新的资源。他的请求参数都会放在请求体中,因此长度限制都是客户端和服务器共同限制的。他也是非幂等的,每次提交该请求都会创建新的资源

为什么说GET请求的数据长度有上限?底层的真正原因是什么?

逐层深入的来讲:

  1. GET请求的参数会放在url中

  2. 浏览器会对url的长度有限制

  3. 这是因为,服务器端在解析url时,是将url作为字符串作为一个整体来看待的,无法拆分开。

    因此,如果url过长,或者说无限长,服务器端就需要给url开辟很大的空间。

    那么,在多线程高并发的情况下,假设有若干个url,就很有可能会造成内存溢出

这就是GET请求的数据长度有上限的底层真正原因