【后端】经典面试题——GET和POST的区别

要想答好这个题,要分两步

第一步:先来一句总结性的话

GET和POST是没有本质区别的~~

(使用GET实现的场景,基本都可以使用POST来代替,使用POST实现的场景,也可以使用GET来代替)

第二步,再来谈谈细节上的区别

(1)GET的语义是“从服务器获取数据”,POST的语义是“往服务器上提交数据”

(2)使用习惯上,给服务器传递的数据,GET通常放在URL的 query string中,而POST通常是放在body中

 (3)GET请求建议实现成“幂等”的,POST一般不要求实现成“幂等”

幂等的意思是,知道输入结果,也知道对应的输出结果,你输入csdm官网的URL,网页就会跳转到csdm官网,而不会跳转到不孕不育的界面,这就是幂等的

设计服务器的时候,就需要提供一些“接口/api”

api传入的参数,就视为输入

api返回的结果,就视为输出

基于GET的api一般都会建议设计成幂等的,基于POST的api则无要求~~

如果不是幂等的,有时候我们搜索一些关键词,跳出来的广告,在你重复刷新后,你会发现显示的广告虽然还是广告,但是内容不一样了,这就是不是幂等的结果

(4)在幂等的基础上,GET的请求是可以被缓存的,POST则一般不会缓存

缓存是浏览器的默认行为,因为你会经常登录csdm的官网,csdm的有些内容是会被缓存下来的,之后你在次搜索,就会提高效率(大致意思)

如果GET是幂等的,没事,不用管,但如果GET不是幂等的,那就要让每次GET请求的URL都不相同,通过特殊的query string来保证url不同,这样就避免产生缓存了


网上会有这样一个说法:POST比GET更安全

这个说法的依据是:GET把参数放在url里面,如果实现登录页面,一登录,你的用户名和密码就直接以query sting 的形式放在url里卖了,就直接显示带浏览器的地址栏中了,这样就不太安全

而POST则是把参数放到body中,不会显示到浏览器界面上,手艺不会直接显示出来就更安全了

注意:这个说法是错误的,数据安全不是光靠是否显示出来就不安全来判定的

而是你的数据在被黑客截获后,无法解析内容,这才是安全的

https有加密功能,http没有加密功能,但相对来说,我们一般都是通过业务来进行加密的,与POST/GET/HTTP没有太大的关系~

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值