HTTP 的 八大请求方式:GET、 POST、 HEAD、OPTIONS、 PUT、 DELETE、 TRACE、 CONNECT。
1. GET
GET 动作:用于获取资源,当采用 GET 方式请求指定资源时, 被访问的资源经服务器解析后立即返回响应内容。
通常以 GET 方式请求特定资源时, 请求中不应该包含请求体,所有需要向被请求资源传递的数据都应该通过 URL 向服务器传递。
2. POST
POST 动作:用于提交数据, 当采用 POST 方式向指定位置提交数据时,数据被包含在请求体中,服务器接收到这些数据后可能会建立新的资源、也可能会更新已有的资源。
同时 POST 方式的请求体可以包含非常多的数据,而且格式不限。因此 POST 方式用途较为广泛,几乎所有的提交操作都可以使用 POST 方式来完成。
虽然用 GET 方式也可以提交数据,但一般不用 GET 方式而是用 POST 方式。在 HTTP协议中,建议 GET 方式只用来获取数据,而 POST 方式则用来提交数据(而不是获取数据)。
★ get方式和post方式有何区别
简单来说,本质上区别:
- GET产生 一个 TCP数据包
- POST产生 两个 TCP数据包
也就是说:
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
详细区别:
数据携带上:
- GET方式:在URL地址后附带的参数是有限制的,其数据容量通常不能超过1K。
- POST方式:可以在请求的实体内容中向服务器发送数据,传送的数据量无限制。
请求参数的位置上:
- GET方式:请求参数放在URL地址后面,以 ? 的方式来进行拼接
- POST方式:请求参数放在HTTP请求包中
用途上:
-
GET方式一般用来获取数据
-
POST方式一般用来提交数据
-
首先是因为GET方式携带的数据量比较小,无法带过去很大的数量
-
POST方式提交的参数后台更加容易解析(使用POST方式提交的中文数据,后台也更加容易解决)
-
GET方式比POST方式要快 GET方式比POST方式要快
更快的原因:
-
post请求包含更多的请求头
因为post需要在请求的body部分包含数据,所以会多了几个数据描述部分的首部字段(如content-type),这其实是微乎其微的。 -
post在真正接受数据之前会先将请求头发送给服务器进行确认,然后才真正发送数据
post请求的过程:
[1].浏览器请求tcp连接(第一次握手)
[2].服务器答应进行tcp连接(第二次握手)
[3].浏览器确认,并发送post请求头(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)
[4].服务器返回100 continue响应
[5].浏览器开始发送数据
[6].服务器返回200 ok响应
get请求的过程:
[1] .浏览器请求tcp连接(第一次握手)
[2].服务器答应进行tcp连接(第二次握手)
[3].浏览器确认,并发送get请求头和数据(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)
[4].服务器返回200 ok响应
也就是说,目测get的总耗是post的2/3左右
-
get会将数据缓存起来,而post不会
-
post不能进行管道化传输
-
-
所以,在可以使用get请求通信的时候,不要使用post请求,这样用户体验会更好,当然,如果有安全性要求的话,post会更好。
3. PUT
PUT 动作:用于向指定位置提交数据, 当采用 PUT 方式向指定位置提交数据时, 数据被包含在请求体中, 服务器接收到这些数据后直接在当前位置(即提交数据时指定的位置) 创建新的资源。
PUT 方式和 POST 方式极为相似,都可以向服务器提交数据,
-
PUT 方式通常指定了资源的存放位置(即提交数据时指定的位置)
-
POST 方式所提交的数据由服务器决定存放位置(可能是新增数据,也可能是更新数据)。
在 HTTP 规范中,建议 PUT 方式只用来创建新的资源。
4. DELETE
DELETE 动作:用于删除特定位置的资源。
采用 DELETE 方式访问特定位置的资源时, 服务器接受到请求后会删除当前位置对应的资源。
5. HEAD
HEAD 动作:用于获取响应头,采用 HEAD 方式请求指定资源时,被访问的资源经服务器解析后立即返回响应,但返回的响应中仅包含状态行和响应头,不包含响应体。
HEAD 动作通常 用于完成测试 URI 的有效性、 获取资源更新时间等操作。
6. TRACE
TRACE 动作:用于回显服务器收到的请求,主要用于测试或诊断。
7. OPTIONS
OPTIONS 动作:用于查询服务器针对特定资源所支持的 HTTP 请求方式,即询问客户端可以以那些方式来请求相应的资源, 同时使用 OPTIONS 方式也可以用来测试服务器的性能。
8. CONNECT
CONNECT 动作:要求在与代理服务器通信时建立隧道, 实现用隧道协议进行 TCP 通信。主要使用 SSL(安全套接层)和 TLS(传输层安全) 协议把通信内容加密后经网络隧道传输。