本文主要探讨 REST 和 SOAP 之间的主要区别。 其实把他俩放一起讨论,就好像拿苹果和橘子对比一样,因为 SOAP 是一种基于 XML 的协议格式,而 REST 是一种架构风格。
本文摘要
- 什么是 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 消息方面花费精力。