面试官:说一下 GET 和 POST 最本质的区别?

作者 | 磊哥

来源 | Java面试真题解析(ID:aimianshi666)

转载请联系授权(微信ID:GG_Stone)

磊哥《Java 面试提高课(2023版)》(戳我加入)正式上线了,里面包含了 20 万字的最新 Java 面试题(问答形式),并配套有 Spring Cloud、MQ、设计模式等内容,以及简历辅导、复习规划、模拟面试、一对一答疑等服务,期待你的加入哦~

GET 和 POST 是 HTTP 请求中最常用的两种请求方法,在日常开发的 RESTful 接口中,都能看到它们的身影。而它们之间的区别,也是一道常见且经典的面试题,所以我们本文就来详细的聊聊。HTTP 协议定义的方法类型总共有以下 10 种:

PS:目前大部分的网站使用的都是 HTTP 1.1 的协议。

但在日常开发中,使用频率最高的就属 GET 请求和 POST 请求了,尤其是在中、小型公司,基本只会使用这两种请求来实现一个项目。

1.相同点和最本质的区别

1.1 相同点

GET 请求和 POST 请求底层都是基于 TCP/IP 协议实现的,使用二者中的任意一个,都可以实现客户端和服务器端的双向交互。

1.2 最本质的区别

GET 和 POST 最本质的区别是“约定和规范”上的区别,在规范中,定义 GET 请求是用来获取资源的,也就是进行查询操作的,而 POST 请求是用来传输实体对象的,因此会使用 POST 来进行添加、修改和删除等操作。当然如果严格按照规范来说,删除操作应该使用 DELETE 请求才对,但在实际开发中,使用 POST 来进行删除的用法更常见一些。按照约定来说,GET 和 POST 的参数传递也是不同的,GET 请求是将参数拼加到 URL 上进行参数传递的,而 POST 是将请参数写入到请求正文中传递的,如下图所示:

2.非本质区别

2.1 缓存不同

GET 请求一般会被缓存,比如常见的 CSS、JS、HTML 请求等都会被缓存;而 POST 请求默认是不进行缓存的。

2.2 参数长度限制不同

GET 请求的参数是通过 URL 传递的,而 URL 的长度是有限制的,通常为 2k,当然浏览器厂商不同、版本不同这个限制的大小值可能也不同,但相同的是它们都会对 URL 的大小进行限制;而 POST 请求参数是存放在请求正文(request body)中的,所以没有大小限制。

2.3 回退和刷新不同

GET 请求可以直接进行回退和刷新,不会对用户和程序产生任何影响;而 POST 请求如果直接回滚和刷新将会把数据再次提交,如下图所示:

2.4 历史记录不同

GET 请求的参数会保存在历史记录中,而 POST 请求的参数不会保留到历史记录中。

2.5 书签不同

GET 请求的地址可被收藏为书签,而 POST 请求的地址不能被收藏为书签。

总结

GET 和 POST 是 HTTP 请求中最常用的两种请求方法,它们的底层都是基于 TCP/IP 实现的。它们的区别主要体现在 5 个方面:缓存不同、参数长度限制不同、回退和刷新不同、历史记录不同、能否保存为书签不同,但它们最大的区别是规范和约定上的不同,规范中定义 GET 是用来获取信息的,而 POST 是用来传递实体的,并且 GET 请求的参数要放在 URL 上,而 POST 请求的参数要放在请求正文中。

参考 & 鸣谢

www.w3school.com.cn/tags/html_ref_httpmethods.asp

重磅推荐

磊哥的《Java面试提高课(2023版)》正式上线了,这次的课程诚意满满,共计 19 大模块,并首次加入了 Spring Cloud 相关面试内容,共计 20 余万字,是我目前见过最好的 Java 面试课了。

一句话概括:最全的面试题没我新,最新的面试题没我全。且这次配套了 6 大增值服务:简历辅导、一对一答疑、专属复习规划、项目评审、模拟面试、职业规划,价格非常低,一次性购买,永久阅读,点击查看详情:点我打开

相关推荐

  • SpringBoot巧用 @Async 提升API接口并发能力
  • 谷歌裁员细节曝光:开源主管被裁,61岁程序员在线求职,有人60天找不到工作就被遣返
  • 最好的SpringBoot系统!!!
  • 使用 fcntl 模块对文件进行加解锁
  • ChatGPT全景图 | 产品+商业篇
  • 别总写代码,这130个网站比涨工资都重要!
  • 一男医生乱发女患者私密照;乳山部分海景房每平米跌破千元;韩国女子在驻韩美军基地被性侵;鱼跃医疗被罚270万元...|酷玩日爆
  • 日本啤酒品牌的中国大溃败
  • 美国又要对华为下黑手了,我们怎么办?
  • 《狂飙》证明:影视剧里的坏人,其实教不坏观众
  • 流浪地球周边到!2800+零件还原装甲车,科幻迷沸腾了!
  • 双腿截肢黑人男子遭美警连开10枪身亡;英工人维修核潜艇时用胶水粘螺丝螺栓;美国拟追加20亿美元对乌军援 | 每日大新闻
  • 《流浪地球2》No,《The Wandering Earth II》Yes!外网影评之怪现状
  • 快手精排模型实践
  • 实现高并发秒杀的七种方式
  • 一文走进多核架构下的内存模
  • 天猫汽车商详页的SSR改造实践
  • 聊聊天空计算,跨云存储与Xline
  • 微软、GitHub和OpenAI要求法院驳回AI版权诉讼
  • 大厂裁员轰轰烈烈,哪个技术岗位可以独善其身?