HTTP 的 八大请求方式

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方式要快

      更快的原因:

      1. post请求包含更多的请求头
        因为post需要在请求的body部分包含数据,所以会多了几个数据描述部分的首部字段(如content-type),这其实是微乎其微的。

      2. 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左右

      3. get会将数据缓存起来,而post不会

      4. 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(传输层安全) 协议把通信内容加密后经网络隧道传输。

你可能感兴趣的:(随笔)