面试题3:GET 和 POST 有什么区别?

[!]高频面试题。
GET 和 POST 没有本质区别,可以进行相互代替。

1、GET语义:“从服务器获取数据”;POST语义:“往服务器上提交数据”。[设计初衷,不一定要遵守]

2、发请求时,给服务器传递的数据,GET 一般是放在查询字符串中,但GET 也可以把数据放在 body 里。不过比较少见,以至于浏览器不一定能支持,不过其他的http客户端可以支持;POST 一般是放在 body 中,但是也可以放在 查询字符串 中,虽然少见,但是浏览器是可以支持的。 一定程度上,佐证了 GET 和 POST 可以相互代替。

3、基于GET的api,一般会设计成幂等;POST不要求[设计初衷,不一定要遵守]
设计服务器时,就需要提供一些接口,接口传入的参数,就视为是输入,接口返回的接口,就视为是输出。基于GET的api,加粗样式一般会设计成幂等;POST不要求
幂等:输入结果是确定的,输出结果也是确定的。
譬如现时生活中,奶牛吃草,挤出来的是牛奶,这就是一个典型的幂等的情况。

4、在幂等的基础上,GET请求结果可以被缓存,POST一般不缓存。
如果当前GET确实是幂等的,就不必处理,让浏览器缓存。如果当前GET不是幂等的,就需要通过特殊技巧避免浏览器产生缓存(典型的技巧就是让每次GET请求的URL都不相同:即通过特殊的查询字符串来保证 URL 的不同)。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值