HTTP常见请求方法小结

1,684 阅读5分钟

HTTP常见请求方法小结

HTTP请求的常用方法有:1、GET方法;2、POST方法;3、HEAD方法;4、PUT方法;5、DELETE方法;6、CONNECT方法;7、OPTIONS方法;8、TRACE方法:9、 PATCH方法;这9种。

回顾一下HTTP

HTTP(HTTP, HyperText Transfer Protocol),即超文本传输协议,是一种实现客户端和服务器之间通信的响应协议,它是用作客户端和服务器之间的请求。是一种无状态的协议

客户端(浏览器)会向服务器提交HTTP请求;然后服务器向客户端返回响应;其中响应包含有关请求的状态信息,还可能包含请求的内容。

HTTP版本与 HTTP请求方法发展历史

在HTTP的发展过程当中,出现了不少HTTP版本,其中的大部分协议都是向下兼容的。在进行HTTP请求时,客户端在请求时会告诉服务器它采用的协议版本号,而服务器则会在使用相同或者更早的协议版本进行响应。

HTTP/1.0

HTTP/1.0 定义了三种请求方法:GET, POSTHEAD 方法。
这个版本是第一个在HTTP通信中指定版本号的协议版本,HTTP/1.0 至今仍被普遍采用,特别是在代理服务器中。

HTTP/1.1

HTTP/1.1 最初新增了五种请求方法:PUTOPTIONSDELETETRACECONNECT 方法。标准制定以后,又陆续扩展了一些方法。

HTTP/1.1 是当前正广泛使用的版本。该版本默认采用持久链接,并能很好地配合代理服务器工作。还支持以管道方式同时发送多个请求,以便下降线路负载,提升传输速度。

HTTP/2

2.0 版本的协议于2015年5月正式发布,目前使用度正在普及。HTTP/2 经过支持请求与相应的多路复用来减小延迟,经过压缩HTTP头字段将协议开销降到最低,同时增长了对请求优先级和服务器端推送的支持。 HTTP/2是现行HTTP协议(HTTP/1.x)的替代,但它不是重写,HTTP方法/状态码/语义都与HTTP/1.x一样。

HTTP/3

这个是最新推出的协议版本,市面上使用的不多,谷歌开始带头使用这项协议。HTTP/3 之前名为 HTTP-over-QUIC,其最大的特点就是使用了 QUIC 协议。而 QUIC 协议是 Google 提出的一套开源协议,它基于 UDP 来实现,直接竞争对手是 TCP 协议。HTTP/3 和 QUIC 协议尚未标准化。

HTTP常见请求方法简介

1、GET方法

GET 方法用于根据指定的 URI(Uniform Resource Identifier,统一资源标识符)从给定服务器中检索信息,即从指定资源中请求数据。使用GET方法的请求应该只是检索数据,并且不应对数据产生其他影响。注意 GET请求的不安全性,在地址栏和历史记录中明文显示。

2、HEAD方法

HEAD方法与GET方法基本相同,但没有响应体,仅传输状态行和标题部分。这对于查看响应头的数据非常有用,无需传输整个内容。HEAD方法常被用于客户端查看服务器的性能。

3、POST方法

POST方法用于将数据发送到服务器以创建或更新资源,它要求服务器确认并处理请求中包含的数据内容,这个请求可能会建立新的资源或/和修改现有资源。

POST请求永远不会被缓存,且对数据长度没有限制;我们无法从浏览器历史记录中查找到POST请求。

4、PUT方法

PUT方法用于将数据发送到服务器以创建或更新资源,它可以用上传的内容替换目标资源中的所有当前内容。

它会将包含的元素放在指定的 URI 下,如果 URI 指示的是当前资源,则会被更新取代;如果指定 URI 没有资源,会新增并将元素添加进去。

5、DELETE方法

DELETE方法用来删除指定 URI 的资源,它会删除 URI 给出的目标资源的所有当前内容。

6、CONNECT方法

CONNECT方法用来建立到给定 URI 标识的服务器的隧道;它是HTTP/1.1协议预留的,可以将链接改成管道方式的代理服务器。

7、OPTIONS方法

OPTIONS请求与HEAD相似,通常也是用于客户端查看服务器的性能。 这个方法会请求服务器返回该资源所支持的预定义URL的HTTP策略。该方法会用 ’*’ 来代替资源名称,向服务器发送OPTIONS请求,能够测试服务器功能是否正常。JavaScript的 XMLHttpRequest 对象进行CORS跨域资源共享时,就是使用OPTIONS方法发送嗅探请求,以判断是否有对指定资源的访问权限。

8、TRACE方法

TRACE请求服务器回显其收到的请求信息,该方法主要用于HTTP请求的测试或诊断。

9、PATCH方法

PATCH方法出现的较晚,它在2010年的[RFC 5789]标准中被定义。PATCH请求与PUT请求相似,一样用于资源的更新。两者有区别,PATCH通常用于资源的部分更新,而PUT通常用于资源的总体更新。 PATCH 与 PUT 属性上的一个重要区别还在于:PUT 是幂等的,而 PATCH 不是幂等的。

PUT把一个包含了修改某项数据后的完整资源对象传给后端,做完整更新。这种方法浪费带宽,效率低下。 于是PATCH诞生,只传一个修改字段到指定资源去,表示该请求是一个局部更新,后端仅更新接收到的字段。