当前位置: 首页 > 后端技术 > Java

访谈Pop71:GET和POST有什么区别?

时间:2023-04-01 18:52:50 Java

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