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
, POST
和 HEAD
方法。
这个版本是第一个在HTTP通信中指定版本号的协议版本,HTTP/1.0 至今仍被普遍采用,特别是在代理服务器中。
HTTP/1.1
HTTP/1.1 最初新增了五种请求方法:PUT
、OPTIONS
、DELETE
、TRACE
和 CONNECT
方法。标准制定以后,又陆续扩展了一些方法。
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
诞生,只传一个修改字段到指定资源去,表示该请求是一个局部更新,后端仅更新接收到的字段。