• SOAP 和 REST 的区别


    很多人在软件开发中会分不清 SOAP 和 REST 方式,今天就来浅谈一下两者之间的区别。

    通俗理解

    通俗的来说,互联网时代,通信变得更加简单了,只要有网络就可以实现通信。通信需要遵循的一个规则就是协议。Rest 和 Soap 我们可以理解为信件和明信片,它们是建立在 Http 协议的通信方式

    Soap 是建立在 Http 之下的一种软件程序之间的通讯协议,

    信封

    Rest 是一种规范,主流的 Web API ,核心就是资源,一个资源可以就是被标识的实体,有具体的名称和地址。

    邮票

    Soap 主要通过 xml 格式传递消息,而 Rest 可以使用 xml.json.html 。

    邮政员

    TCP/IP 协议。

    SOAP 协议

    SOAP(Simple Object Access Protocol 简单对象访问协议),是交换数据的一种协议规范,是一种轻量的、简单的、基于 XML(标准通用标记语言下的一个子集)的协议,它被设计成在 Web 上交换结构化的和固化的信息。

    REST 风格

    REST(Representational State Transfort) 形式上应该表述为客户端通过申请资源来实现状态的转换,在这个角度系统可以看成一台虚拟的状态机。

    REST API 就是把数据以资源的形式暴露出来,并使用标准的 Http 方法来代表创建、读取、更新和删除等

    不用的方法表明了要执行的动作,不同的 http 方法作用于同一个 URL 上可实现不同的功能按照REST原则设计的软件、体系结构,通常被称为 “ REST 式的”(RESTful),REST 应该满足这样的特点:

    • 客户端和服务器结构

    • 连接协议具有无状态性

    • 能够利用 Cache 机制增进性能

    • 层次化的系统

    • 按需代码

    区别

    • SOAP 是协议,REST 是架构风格

    SOAP Web Services 的开发需要遵循 SOAP 协议。

    REST Web services 的开发需要遵循 REST 的架构风格。

    一个 REST Web service 也可以使用 SOAP 协议。

    • 消息格式

    SOAP 支持 XML 消息格式,REST 支持平文,HTML,XML,JSON 格式消息

    • 驱动

    SOAP 是功能驱动, REST 是数据驱动或资源驱动

    • 安全性

    SOAP 更安全,不仅像 REST 一样支持 SSL ,还增加了企业及安全特性的 WebServices -Security,因此它能提供通过中介的身份验证,而不仅仅是端对端的验证(SSL)。

    可以内置的 ACID ,指数据库事务正确执行的四个基本要素的缩写,包含,原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)

    而 REST 受限于 HTTPS,HTTP,本身无法提供两阶段提交分布式十五资源,但 SOAP 可以。

    SOAP 的优势

    与 REST 相比,SOAP 有以下优势:

    • 独立于语言、平台、传输

    • 在分布式企业环境中运行良好

    • 标准化

    • 提供重要的WebServices

    • 内置错误处理

    REST 优势

    REST 在大多数情况下更易于使用且更灵活。与 SOAP 相比,它具有以下优势:

    • 无需昂贵的工具即可与 Web 服务交互

    • 学习曲线更小

    • 使用更小的信息格式完成高效信息传递

    • 无需大量处理,更快速传递信息


    总结

    每个协议都有明确的优点和缺点。选择 SOAP 还是 REST 取决于 使用的编程语言、使用环境要求

    在许多情况下,Web 服务的选择也决定了我们对协议的选择。无论为 Web 服务选择 SOAP 还是 REST,确保能够彻底测试 API 。使用拥有一整套功能、性能、安全性的 API管理工具,可满足 API 更高更全面的测试需求。

    这里我推荐图中演示工具 Eolink,它一款能设计、管理 API,一键生成 API 文档的管理工具,除此之外还能直接打通接口测试,一键发起 API 测试,方便快捷且功能强大。感兴趣可自行使用:www.eolink.com

  • 相关阅读:
    微服务项目:尚融宝(42)(核心业务流程:借款额度审批(2))
    常态化防疫下,社区该如何快速收集防疫信息?
    136.只出现一次的数字
    移动端游戏软件开发:从创意到发布的全过程
    Spring cloud负载均衡@LoadBalanced & LoadBalancerClient
    Spring Boot实战演练Demo
    【 java 常用类】日期相关 API 操作
    深度剖析数据在内存中的存储
    ubuntu16.04安装低版本cmake(安装cmake安装)
    虚基类设计 c++
  • 原文地址:https://blog.csdn.net/qq_40857096/article/details/126290470