请求的区别

幂等性:是指不管进行多少次重复操作,都是实现相同的结果。

幂等操作:GET:查询,此操作多次实现的结果都是一样的。参数通过URL传递。大小有限制(2k字节以内)。而且参数会被完整保留在浏览器历史记录里面。不安全,非 ASCII字符,会在请求之前进行转码,数据包,产生一个TCP数据包,浏览器会把http header和data一并发送出去,服务器响应200(返回数据)。缓存,请求会被浏览器主动cache。

PUT:更新,将A修改为B,第一次请求值变为了B,再进行多次此操作,最终的结果还是B,与一次执行的结果一样的。如果两个请求相同,后一个请求会把第一个请求覆盖掉。

DELETE:删除,此操作多次实现的结果都是一样的。注意:客户端无法保证删除操作一定会被执行,因为HTTP规范允许服务器在不通知客户端的情况下撤销请求。


非幂等操作:POST:新建一个查询项目,多次请求会产生不同的结果。后一个请求不会把第一个请求覆盖掉。(表单提交)

 参数放在Request

body里。大小没有限制。参数不会保留在浏览器历史记录里面。

安全,

非 ASCII 字符,不用转码,因为在Request body中,通过 MIME,也就可以传输非 ASCII 字符。

数据包,POST产生两个TCP数据包。浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

缓存,不会,除非手动设置。


其他方法:

HEAD:与GET方法的行为很类似,但服务器在响应中只返回实体的主体部分。这就允许客户端在未获取实际资源的情况下,对资源的首部进行检查,使用HEAD,我们可以更高效的完成以下工作:

在不获取资源的情况下,了解资源的一些信息,比如资源类型;

通过查看响应中的状态码,可以确定资源是否存在;

通过查看首部,测试资源是否被修改;


TRACE:会在目的服务器端发起一个“回环”诊断,我们都知道,客户端在发起一个请求时,这个请求可能要穿过防火墙、代理、网关、或者其它的一些应用程序。这中间的每个节点都可能会修改原始的HTTP请求,TRACE方法允许客户端在将请求发送服务器时,请求最终到达服务器,服务器会弹回一条TRACE响应,并在响应主体中携带它收到的原始请求报文的最终模样。这样客户端就可以查看HTTP请求报文在发送的途中,是否被修改过了。


OPTIONS:用于获取当前URL所支持的方法。若请求成功,则它会在HTTP头中包含一个名为“Allow”的头,值是所支持的方法,如“GET, POST”。

你可能感兴趣的:(请求的区别)