当前位置:网站首页>面试突击71:GET 和 POST 有什么区别?
面试突击71:GET 和 POST 有什么区别?
2022-08-03 16:28:00 【Trouvailless】
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 请求的参数要放在请求正文中。
边栏推荐
- MarkDown常用代码片段和工具
- leetcode:202. 快乐数
- C专家编程 第3章 分析C语言的声明 3.9 轻松一下---驱动物理实体的软件
- Cookie和Session的关系
- vector类
- [Unity Getting Started Plan] Basic Concepts (8) - Tile Map TileMap 02
- Windows 事件转发到 SQL 数据库
- 【深度学习】今日bug(8月2)
- mysql delete execution error: You can't specify target table 'doctor_info' for update in FROM clause
- How to analyze the weekly activity rate?
猜你喜欢

附录A 程序员工作面试的秘密

2年开发经验去面试,吊打面试官,即将面试的程序员这些笔记建议复习

Windows 事件查看器记录到 MYSQL

vector类

MATLAB | 七夕节快到了,还不给朋友安排上这个咕呱小青蛙?
![[QT] Qt project demo: data is displayed on the ui interface, double-click the mouse to display specific information in a pop-up window](/img/3f/265c9d2703056260e03c346fa65a03.png)
[QT] Qt project demo: data is displayed on the ui interface, double-click the mouse to display specific information in a pop-up window

leetcode:189. 轮转数组

leetcode-693.交替位二进制数

《社会企业开展应聘文职人员培训规范》团体标准在新华书店上架

QT QT 】 【 to have developed a good program for packaging into a dynamic library
随机推荐
I am doing open source in Didi
Why do I strongly recommend using smart async?
Some optional strategies and usage scenarios for PWA application Service Worker caching
uniapp的webview滑动缩放
smp,numa和mpp体系结构总结
MATLAB | 七夕节快到了,还不给朋友安排上这个咕呱小青蛙?
C语言02、语句、函数
从MatePad Pro进化看鸿蒙OS的生态势能
《社会企业开展应聘文职人员培训规范》团体标准在新华书店上架
C专家编程 第3章 分析C语言的声明 3.1 只有编译器才会喜欢的语法
C专家编程 第1章 C:穿越时空的迷雾 1.11 轻松一下---由编译器定义的Pragmas效果
虹科分享 | 如何测试与验证复杂的FPGA设计(3)——硬件测试
C专家编程 第3章 分析C语言的声明 3.7 typedef struct foo{... foo;}的含义
MobileVIT实战:使用MobileVIT实现图像分类
详谈RDMA技术原理和三种实现方式
C专家编程 第3章 分析C语言的声明 3.3 优先级规则
MPLS的wpn实验
C语言03、数组
建造者模式/生成器模式
FinClip | 2022 年 7 月产品大事记