当前位置:网站首页>面试突击71:GET 和 POST 有什么区别?
面试突击71:GET 和 POST 有什么区别?
2022-08-03 11:31:00 【王磊】
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面试真题解析
边栏推荐
- 【LeetCode—第2题 两数之和 代码详解 】附有源码,可直接复制
- 【MySQL功法】第5话 · SQL单表查询
- Objective - C code analysis of the deep and shallow copy
- 距LiveVideoStackCon 2022 上海站开幕还有3天!
- Dva.js 新手入门指南
- Cross-chain bridge protocol Nomad suffers hacker attack, losing more than $150 million
- 用于发票处理的 DocuWare,摆脱纸张和数据输入的束缚,自动处理所有收到的发票
- LeetCode 899 有序队列[字典序] HERODING的LeetCode之路
- 在线生成接口文档
- What is the ERC20 token standard?
猜你喜欢

赛灵思MPSOC裸机下的 USB调试实验

微信小程序获取用户手机号码
【一起学Rust】Rust的Hello Rust详细解析
【一起学Rust】Rust包管理工具Cargo初步了解

最牛逼的集群监控系统,它始终位列第一!

本周四晚19:00知识赋能第4期直播丨OpenHarmony智能家居项目之设备控制实现

Binary search tree (search binary tree) simulation implementation (there is a recursive version)
请问应该用什么关键字将内容主题设置为 dark 呢

Activiti产生的背景和作用

For invoice processing DocuWare, cast off the yoke of the paper and data input, automatic processing all the invoice received
随机推荐
【无标题】函数,对象,方法的区别
Binary search tree (search binary tree) simulation implementation (there is a recursive version)
缓存--伪共享问题
opencv学习—VideoCapture 类基础知识「建议收藏」
增加WebView对localStorage的支持
JS快速高效开发技巧指南(持续更新)
Traceback (most recent call last): File
Simple implementation of a high-performance clone of Redis using .NET (1)
Objective - C code analysis of the deep and shallow copy
智能合约是什么?
面试官:SOA 和微服务的区别?这回终于搞清楚了!
零拷贝、MMAP、堆外内存,傻傻搞不明白...
complete knapsack problem
实至名归!九章云极DataCanvas公司荣获智能制造领域多项殊荣
优维低代码:Provider 构件
thymeleaf中的日期格式转化
【TypeScript】Why choose TypeScript?
距LiveVideoStackCon 2022 上海站开幕还有3天!
基于SSM和Web实现的农作物生长监控系统
Generate interface documentation online