GET和POST是HTTP请求中最常用的两种请求方式,在日常开发的RESTful接口中都能看到它们的身影。而它们之间的区别也是一道常见且经典的面试题,所以我们会在这篇文章中详细说一下。HTTP协议一共定义了10种方法类型:PS:目前大多数网站使用的是HTTP1.1协议。但是在日常开发中,GET请求和POST请求是使用频率最高的,尤其是中小型公司,基本上只使用这两个请求来实现一个项目。一、相同点和最本质的不同点1、相同点GET请求和POST请求在底层都是基于TCP/IP协议实现的。使用它们中的任何一个都可以实现客户端和服务端的双向交互。2.最本质的区别GET和POST最本质的区别就是“约定和规范”的区别。在规范中定义了GET请求用于获取资源,即查询操作,而POST请求用于传递实体对象,POST将用于执行添加、修改、删除等操作。当然,如果严格按照规范,删除操作应该使用DELETE请求,但在实际开发中,更常见的是使用POST来删除。根据协议,GET和POST的参数传递也是不同的。GET请求是在URL中添加参数进行参数传递,而POST是将请求参数写入请求文本,如下图所示:2.非本质区别1.缓存不同GET请求一般缓存,比如常见的CSS、JS、HTML请求等;默认情况下不缓存POST请求。2.参数长度限制不同GET请求的参数都是通过URL传递的,URL的长度是有限制的,一般是2k。当然,限制的大小可能会随着浏览器厂商和版本的不同而有所不同,但相同的是,它们都限制了URL的大小;而POST请求参数保存在请求文本(requestbody)中,所以没有大小限制。3、回滚刷新不同的GET请求可以直接回滚刷新,对用户和程序没有任何影响;而POST请求直接回滚刷新会重新提交数据,如下图:4.History不同GET请求的参数保存在history中,而POST请求的参数不保存在history中历史。5、书签不同GET请求的地址可以添加书签,POST请求的地址不能添加书签。总结GET和POST是HTTP请求中最常用的两种请求方式,它们的底层都是基于TCP/IP实现的。它们的区别主要体现在五个方面:缓存不同、参数长度限制不同、回滚刷新不同、历史记录不同、是否可以保存为书签。但它们之间最大的区别是规格和约定的不同。定义GET用于获取信息,POST用于传递实体,GET请求的参数放在URL中,POST请求的参数放在请求文本中。
