70-HTTP 请求方式

根据 HTTP 标准,HTTP 请求可以使用多种请求方法

  • HTTP1.0 定义了三种请求方法:GET、POST 和 HEAD 方法。
  • HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。

1、GET【获取资源】

GET 本质就是发送一个请求来取得服务器上的某一资源。资源通过一组 HTTP 头和呈现数据(如 HTML 文本,或者图片或者视频等)返回给客户端。GET 请求中,永远不会包含呈现数据。即 GET 请求只用来向服务器获取资源,而 GET 请求本身不应该携带任何呈现数据。

  1. 登录时 GET 获取服务器数据库用户名和密码进行验证。
  2. 下载文本、图片、音视频等时获取服务器资源。

2、POST【传输实体文本】

POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在 POST 请求体中。POST 请求可能会导致新的资源的建立或已有资源的修改。

  1. 提交用户注册信息。
  2. 提交修改的用户信息。

3、HEAD【获得报文首部】

类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头。欲判断某个资源是否存在,我们通常使用 GET,但这里用HEAD 则意义更加明确。

  1. 向服务器获取某些易过期或丢失大型文件时,可用 HEAD 方式查询资源是否存在。

4、OPTIONS【询问支持的方法】

客户端询问服务器可以提交哪些请求方法。这个方法很有趣,它用于获取当前 URL 所支持的方法。若请求成功,则它会在 HTTP 头中包含一个名为“Allow”的头,值是所支持的方法,如“GET, POST”。极少使用。

5、PUT【传输文件】

从客户端向服务器传送的数据取代指定的文档的内容,即指定上传资源存放路径。这个方法比较少见。HTML 表单也不支持这个。本质上来讲,PUT 和 POST 极为相似,都是向服务器发送数据,但它们之间有一个重要区别,PUT 通常指定了资源的存放位置,而 POST 则没有,POST 的数据存放位置由服务器自己决定。

如一个用于提交博文的 URL,/addBlog。如果用 PUT,则提交的 URL 会是像这样的 /addBlog/abc123,其中 abc123 就是这个博文的地址。而如果用 POST,则这个地址会在提交后由服务器告知客户端。目前大部分博客都是这样的。显然,PUT 和 POST 用途是不一样的。具体用哪个还取决于当前的业务场景。

6、PATCH【局部更新文件】

是对 PUT 方法的补充,用来对已知资源进行局部更新 。极少使用。

7、DELETE 【删除文件】

基本上这个也很少见,不过还是有一些地方比如amazon的S3云服务里面就用的这个方法来删除资源。

8、TRACE 【追踪路径】

回显服务器收到的请求,客户端可以对请求消息的传输路径进行追踪,TRACE 方法是让 Web 服务器端将之前的请求通信还给客户端的方法。主要用于测试或诊断。极少使用。

9、CONNECT 【要求用隧道协议连接代理】

HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。CONNECT 方法要求在与代理服务器通信时建立隧道,实现用隧道协议进行 TCP 通信。主要使用 SSL(安全套接层)和 TLS(传输层安全)协议把通信内容加密后经网络隧道传输,极少使用。

总结

以上的方法,我们可以跟数据库的 CRUD 增删改查操作对应起来,这样一来就实现了 HTTP 和数据库操作(其实不光是数据库,任何数据如文件图表都是这样)的完美统一,这也是 REST 的精髓之一。

GET 请求

  1. 从字面意思来说,GET 请求是用来向服务器端获取信息而发送的请求。
  2. 没有特殊设置, 默认情况下浏览器发送的都是 GET 请求,具体的一共有5种,点击超链接,表单提交没有设置 method,表单提交设置 method 为 get 方式,在浏览器地址栏直接输入地址访问,ajax 中设置请求方式为get。
  3. GET 请求也可以向服务器端发送请求参数, 形式是在 URL 地址后面加上?,请求参数名和值用=连接,多个请求参数之间使用&分隔。例如:GET /mail/1.html?name=abc&password=xyz HTTP/1.1。
  4. HTTP GET 方法提交的数据大小长度并没有限制,HTTP 协议规范没有对URL长度进行限制。目前说的GET长度有限制,GET方法传输的数据量一般限制在2KB-8KB左右,其原因在于:GET是通过URL提交数据,而URL本身对于数据没有限制,但是不同的浏览器对于URL是有限制的,比如IE浏览器对于URL的限制为2KB,而Chrome,FireFox浏览器理论上对于URL是没有限制的,它真正的限制取决于操作系统本身。POST 方法对于数据大小是无限制的,真正影响到数据大小的是服务器处理程序的能力。

POST 请求

  1. POST 请求的字面含义是向服务器端发送数据,仅在表单中设置method=”post”时,请求方式为 POST 方式,另外在 Ajax 应用中,可以指定请求方式为 POST。
  2. POST 请求会将请求参数放在请求体中,而不是 URL 地址后面,并且发送数据的大小是没有限制的。

GET方法和POST方法本质上的区别:

GET 一般用来从服务器获取数据,POST 一般用来向服务器发送数据。由于 GET 方式所能够携带的数据是由限制的,其数据大小通常不能超过 4K, 不适于提交大量表单数据, 故而在表单的提交方式中首选 POST 方式。

  1. GET方法用于信息获取,它携带的数据应该是安全的(安全:指非修改信息,如数据库方面的信息),而POST方法是用于修改服务器上资源的请求。
  2. GET请求的数据会附在URL之后,而POST方法提交的数据则放置在HTTP报文实体的主体里,所以POST方法的安全性比GET方法要高。
  3. GET 请求,没有请求体。POST 请求,如果 form 表单提交的方式为 post,则表单项的数据以请求体的形式发送给服务器,没有大小限制。

70-HTTP 请求方式
https://flepeng.github.io/010-network-70-HTTP-请求方式/
作者
Lepeng
发布于
2021年3月8日
许可协议