HTTP 协议是后台开发必须要了解的协议,因为在后台开发工作中,少不了使用 HTTP 协议进行交互,比如访问 HTTP 服务获取数据或者实现一个 HTTP 服务。当然,HTTP 协议是不仅仅是后台开发需要了解,只要是开发人员都必须要了解。

HTTP 定义了与服务器交互的不同方法,最基本的方法有4种,分别是 GET,POST,PUT,DELETE。URL 全称是资源描述符,我们可以这样认为:一个 URL 地址,它用于描述一个网络上的资源,而 HTTP 中的 GET,POST,PUT,DELETE 就对应着对这个资源的查,改,增,删 4 个操作。到这里,大家应该有个大概的了解了,GET 一般用于获取/查询资源信息,而 POST 一般用于更新资源信息。

在谈论 HTTP GET 和 POST 的区别时,我们不能脱离其使用分场景,就像我们在做阅读理解时要想了解某个句子的具体含义,不能脱离语境。下面就分场景说一下 GET 和 POST 的区别。

浏览器的 GET 和 POST 的区别:
(1)作用不同。GET 用于获取资源,POST 用于更新资源;
(2)携带数据的方式不同。GET 一般将数据已参数的形式放到 URL 中,虽然 HTTP 标准并未对 URL 长度做限制,但是浏览器在实现时,一般会对 URL 的长度做限制,所以携带的数据有限;POST 将数据放到 Body 中,无长度限制;
(3)安全性不同。GET 比 POST 更不安全,因为参数直接暴露在 URL 上,所以不能用来传递敏感信息;
(4)幂等性不同。GET 对访问的数据没有副作用,具有幂等性。POST 用于更新操作往往是有副作用的,不幂等。因为幂等性的差别,GET 产生的 URL 地址可以保存为书签,而 POST 不可以。GET 请求会被浏览器主动 cache,而 POST 不会,除非手动设置。

RPC 接口中的 GET 和 POST 的区别:
在后台 RPC 接口调用中,我们可以利用 HTTP 协议进行通信,此时 GET/POST 不光能用在前端和后端的交互中,还能用在后端各个子服务的调用中。当用HTTP实现接口发送请求时,就没有浏览器中那么多限制了,只要是符合 HTTP 格式的就可以发送。

所以该应用场景下,GET 与 POST 除了语义上区别,在作用上并无区别,GET 可以使用 body 协议数据用于更新远端资源,POST 也可以把数据放到 URL 参数中用于获取远端资源,这完全取决于被调接口的具体实现。


参考文献

[1] 知乎.GET 和 POST 到底有什么区别?

HTTP GET 和 POST 的区别相关推荐

  1. RPC 笔记(01)— RPC概念、调用流程、RPC 与 Restful API 区别

    1. 基本概念 PRC 远程过程调用 Remote Procedure Call,其就是一个节点请求另外一个节点提供的服务.当两个物理分离的子系统需要建立逻辑上的关联时,RPC 是牵线搭桥的常见技术手 ...

  2. C++ 笔记(28)— C++ 中 NULL和 nullptr 的区别

    最近看公司代码的时候发现在判断指针是否为空的时候,有的时候用的是 NULL, 有的时候用的是 nullptr 感觉很奇怪,好奇心驱使我查了下两者的区别,发现还是有很多细节需要学习的. 1. NULL ...

  3. gcc 和 g++ 的联系和区别,使用 gcc 编译 c++

    GCC 编译器已经为我们提供了调用它的接口,对于 C 语言或者 C++ 程序,可以通过执行 gcc 或者 g++ 指令来调用 GCC 编译器. 实际使用中我们更习惯使用 gcc 指令编译 C 语言程序 ...

  4. Python2 与 Python3 区别

    Python2.x 与 Python3.x 区别 1. print 函数 Python2 中 print 是语句(statement),Python3 中 print 则变成了函数.在 Python3 ...

  5. Docker 入门系列(1)- 初识容器,镜像、容器、仓库的区别

    Docker 简介 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发 ...

  6. HTTP 协议入门 — (TCP/IP协议族、通信传输流、URI 与 URL 的区别、Cookie 状态管理、HTTP 支持的方法、状态码类别、HTTP 首部字段)

    TCP/IP协议族 在介绍 HTTP 协议之前,我们先对 TCP/IP 协议族有个大概的了解,TCP/IP 协议从上到下主要分为应用层.传输层.网络层和数据链路层,各层的主要功能如下表所示: 协议层 ...

  7. python二进制打开(rb)和文本格式打开(r)什么区别?

    使用 open() 函数以文本格式打开文件和以二进制格式打开文件,唯一的区别是对文件中换行符的处理不同. 在 Windows 系统中,文件中用 "\r\n" 作为行末标识符(即换行 ...

  8. python中__dict__与dir()区别

    前言 Python下一切皆对象,每个对象都有多个属性(attribute),Python对属性有一套统一的管理方案. __dict__与dir()的区别: dir()是一个函数,返回的是list: _ ...

  9. java和C#面向对象的区别

    问题:C#中的构造函数和java的构造函数一样吗? 答: .net的项目中,写实体Entity属性时,经常会为每一个属性写一对get和set方法,在用到这个实体或是一个类时,通过new实例化一个对象, ...

  10. 判别模型和生成模型的区别

    20210703 https://www.zhihu.com/question/20446337 机器学习"判定模型"和"生成模型"有什么区别? 重点 http ...

最新文章

  1. CSS有效的编写代码
  2. 明早10点大讲堂 | 一种新型光幕传感器在机器人避障和无人驾驶中的应用
  3. Mmseg中文分词算法解析
  4. java中Protobuf的使用实例
  5. java课后习题_【整理】java私塾教程课后习题
  6. python中的字典推导式_17.python 字典推导式(经典代码)
  7. 将serversocket 写在按钮事件中连接不上_Java服务器的模型—TCP连接/流量优化
  8. RabbitMQ+haproxy+keeplived 高可用负载均衡+镜像集群模式_集成高性能高可用组件 Keepalived_03
  9. python人工智能方向怎么学_人工智能方向需要学习python或是深度学习呢?
  10. 『商务口语』2010.01.11--你要在这里停留多久?
  11. python中的counter函数_Python的 counter内置函数,统计文本中的单词数量
  12. Linux内核之队列操作
  13. AO采集用友oracle,用SQL快速生成用友GRP-U8的AO财务账套的方法2017
  14. mysql分库分表中间件6_数据性能改善——分库分表中间件
  15. 磁珠 符号_超实用理解磁珠
  16. 色度抽样(4:2:0)到底是什么意思?
  17. 外汇EA黄金外汇避险抗膨胀
  18. 按年、月、日统计数据sql写法
  19. 冷血格斗场和热血格斗场
  20. 常用的PHP加密方式

热门文章

  1. 微软推出 “Edge 漏洞研究计划”,类似于谷歌的 Project Zero 项目
  2. 白宫发布太空系统网络安全防护指令
  3. 搭建LINUX BIND实现DNS解析
  4. MHA 节点程序介绍
  5. OpenStack_Swift源代码分析——Ring基本原理及一致性Hash算法
  6. Entity Framework 4 in Action读书笔记——第四章:使用LINQ to Entities查询:预先加载和延迟加载...
  7. 字符编码详解及由来(UNICODE,UTF-8,GBK)
  8. SourceInsight下面一直出现unable to write to temp file for saving operation 这样的提示
  9. 蓝桥杯 ADV-204 算法提高 快速幂
  10. L2-025 分而治之-PAT团体程序设计天梯赛GPLT