本文主要探讨 REST 和 SOAP 之间的主要区别。 其实把他俩放一起讨论,就好像拿苹果和橘子对比一样,因为 SOAP 是一种基于 XML 的协议格式,而 REST 是一种架构风格。

REST 与 SOAP 之间的差异_Web

本文摘要

  • 什么是 REST ?
  • 什么是 SOAP ?
  • REST 和 SOAP 有何不同?

REST 和 SOAP

REST 和 SOAP 没有可比性。REST 是一种软件架构风格,而 SOAP 是一种消息传递格式。我们可以比较一下当前流行的 REST 和 SOAP 风格的实现方式:

  • RESTful 实现的示例:RESTful 基于 HTTP 协议,可以 JSON 为数据格式传递 RESTful API。
  • SOAP 实现的示例:SOAP 基于 XML 的简易协议,可使应用程序在 HTTP 之上进行信息交换。

在顶层,SOAP 限制消息的结构,而 REST 是一种专注于使用 HTTP 作为传输协议的架构方法。

  • SOAP的特殊性在于它是一种数据交换格式。对于 SOAP,它始终是 SOAP-XML,即 XML,它包含下列元素: - 必须的 SOAP 封装(envelope)—— 定义文档中使用的消息和命名空间的根元素 - 可选的 SOAP 标头(header)—— 包含消息属性,例如:安全信息或关于网络路由 - 必须的 SOAP 体块(body) —— 包含应用程序之间交换的消息, - 可选的 Fault 元素 —— 提供有关在处理此消息所发生错误的信息。请求和响应都必须符合 SOAP 结构。
  • REST 的特殊性是使用 HTTP 作为传输协议。它意味着充分利用 HTTP 提供的特性 —— 请求方法、请求头、响应、响应头等。

消息格式

  • 在 SOAP 中,需要使用 SOAP XML 格式进行请求和响应。
  • 在 REST 中则没有这种固定格式。我们可以基于 XML、JSON 或任何其他格式交换消息。JSON 是最流行的格式。

服务定义

  • SOAP 使用 WSDL(Web 服务描述语言),这是一种基于 XML 的语言,用于描述和访问 Web 服务。
  • REST 没有标准的服务定义语言。尽管 WADL 是最早提出的标准之一,但它并不是很流行。目前更为广泛使用和接受的是 Swagger 或 Open API

传输

SOAP 不对传输协议的类型强加任何限制。我们可以使用 HTTP Web 协议或 MQ,REST 最好使用 HTTP 传输协议。

易用性 RESTFful Web 服务通常比基于 SOAP 的 Web 服务更容易实现。

  • REST 通常使用更易于解析和处理的 JSON。除此之外,REST 不需要服务定义来提供 Web 服务。
  • SOAP 除了需要使用 WSDL 定义服务,还要在处理和解析 SOAP-XML 消息方面花费精力。