HTTP之请求方法

653 阅读3分钟

引言

超文本传输协议(HTTP)是一个用于传输超媒体文档(例如 HTML)的应用层协议。 它是为 Web 浏览器与 Web 服务器之间的通信而设计的,但也可以用于其他目的。 HTTP 遵循经典的客户端-服务端模型,客户端打开一个连接以发出请求,然后等待它收到服务器端响应。 HTTP 是无状态协议,这意味着服务器不会在两个请求之间保留任何数据(状态)。

HTTP的请求方法有哪些?

HTTP 定义了一组请求方法, 以表明要对给定资源执行的操作。指示针对给定资源要执行的期望动作。

方法 描述
GET GET方法是请求一个指定资源的表示形式,使用GET的请求应该只被用于获取数据。
HEAD HEAD方法请求一个与GET请求的响应相同的响应,但没有响应体。
POST POST方法用于将请求提交到指定的资源,通常导致在服务器上的状态变化或副作用。
PUT PUT方法用请求有效载荷替换目标资源的所有当前表示。
DELETE DELETE方法删除指定的资源。
CONNECT CONNECT方法建立一个到由目标资源标识的服务器的隧道。
OPTIONS OPTIONS方法用于描述目标资源的通信选项。
TRACE TRACE方法沿着到目标资源的路径执行一个消息环回测试。
PARCH PATCH方法用于对资源应用部分修改。

POST和GET请求的区别

在日常的开发中最常见的就是GET和POST,我们就这两者的区别探讨一下,什么时候使用POST什么时候使用GET。

区别一:

从上文的表格不难看出,GET请求常用于获取服务端的数据,POST接口常用去修改服务端的数据,对应到数据库就是『查』和『改』的区别。

区别二:

从日常使用中我们知道GET的请求参数是拼接在URL后面的,所以GET参数的大小是有限制的(url的长度)。POST的参数是在请求体中的,理论上大小是没有限制的,最大值取决于服务器设置的大小。

区别三:

对比项 GET POST
安全
幂等
可缓存 Only if freshness information is included
安全

这里的安全本质上指的是只读。如果一个方法是只读的,就不会引起服务端的状态变化,那么这个方法就是安全的

幂等

幂等的意思是指一个请求方法执行一次和多次的效果完全相同。GET只做读取操作,所以是幂等的。标准POST请求会修改服务端状态,因此不是幂等。

可缓存

可缓存指请求方法是否可被浏览器缓存。某些情况下的GET,POST都是可缓存的。但是绝大部分浏览器仅仅支持GET缓存。

区别四:

GET和POST本质上都是TCP链接。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。GET产生一个TCP数据包;POST产生两个TCP数据包。

GET实际发送一次请求

POST实际发送两次请求

参考

developer.mozilla.org/en-US/docs/…

developer.mozilla.org/zh-CN/docs/…

www.rfc-editor.org/rfc/rfc7234…