我读过关于SOAP和REST作为web服务通信协议的区别的文章,但是我认为REST相对于SOAP的最大优势是:

REST更加动态,不需要创建和更新UDDI(通用描述、发现和集成)。 REST不仅限于XML格式。RESTful web服务可以发送纯文本/JSON/XML。

但是SOAP更加标准化(例如:安全性)。

那么,这些点我说对了吗?


当前回答

火休息

RESTful API是最著名的API类型。REST代表具象状态传输。

REST api是遵循标准化原则、属性和约束的api。

您可以使用HTTP谓词访问REST API中的资源。

REST api运行在一个简单的请求/响应系统上。您可以使用以下HTTP方法发送请求:

得到 帖子 把 补丁 删除 跟踪 选项 连接 头

下面是最常见的HTTP动词

GET(读取现有数据) POST(创建一个新的响应或数据) PATCH(更新数据) DELETE(删除数据)

客户机可以使用后跟端点的HTTP谓词发出请求。

端点(或路由)是您请求的URL。路径决定了您请求的资源。

当您向端点发送请求时,它将响应相关数据,这些数据通常格式化为JSON、XML、纯文本、图像、HTML等。

REST api还可以设计为许多返回不同类型数据的不同端点。使用REST API访问多个端点需要各种API调用。

一个实际的RESTful API遵循以下五个约束:

客户机-服务器体系结构 客户端向服务器请求数据,不需要第三方解释。 无国籍 无状态意味着每个HTTP请求都在完全隔离的情况下发生。每个请求都包含服务该请求所需的信息。服务器从不依赖以前请求的信息。没有国家。 缓存能力 响应可以显式或隐式地定义为可缓存或不可缓存,以提高可伸缩性和性能。例如,启用GET请求的缓存可以改善资源数据请求的响应时间。 分层 API体系结构的不同层应该协同工作,创建易于更新或调整的可伸缩系统。 统一的接口 客户端和服务器之间的通信必须使用独立于两者的标准化语言进行。这提高了可伸缩性和灵活性。

REST api非常适合需要它的项目

灵活的 可伸缩的 快

SOAP火

SOAP是一种必要的协议,它帮助引入api的广泛使用。

SOAP是简单对象访问协议的首字母缩写。

SOAP是一种标准化协议,它依赖于XML来发出请求和接收响应。

尽管SOAP是基于XML的,SOAP协议仍然被广泛使用。

SOAP API将数据作为服务提供,通常在执行涉及多个API调用或应用程序的事务时使用,其中安全性是主要考虑因素。

SOAP最初是在1998年为Microsoft开发的,它提供了一种标准机制,用于集成internet上的服务,而不考虑操作系统、对象模型或编程语言。

SOAP中的“S”代表Simple(简单),这是有原因的——SOAP可以以更低的复杂性使用,因为它在应用程序层对事务、安全性和其他功能的编码要求更少。

SOAP有三个主要特征:

SOAP API的可扩展性 SOAP允许扩展引入更健壮的特性,如Windows服务器安全性、寻址等等。 SOAP API的中立性 SOAP能够在广泛的协议上操作,如UDP、JMS、SMTP、TCP和HTTP。可以操作。 SOAP API的独立性 SOAP API响应完全基于XML。因此SOAP api是独立于平台和语言的。

开发人员继续争论使用SOAP和REST的利弊。最适合你的项目的是符合你的需求的。

SOAP api仍然是优先考虑安全性的公司实体和政府组织的首选,尽管REST在很大程度上主导了web应用程序。 SOAP比REST更安全,因为它使用WS-Security与安全套接字层一起进行传输 SOAP还具有更出色的事务可靠性,这是SOAP在历史上一直受到银行业和其他大型实体青睐的另一个原因。

其他回答

具象状态传输 对象的代表性状态传输是REST,即我们不发送对象,我们发送对象的状态。 REST是一种架构风格。它没有像SOAP那样定义那么多标准。REST用于公开公共api(例如:Facebook API,谷歌Maps API)通过互联网处理数据的CRUD操作。REST的重点是通过单一一致的接口访问命名资源。

简单对象访问协议 SOAP带来了自己的协议,并专注于将应用程序逻辑(而不是数据)片段作为服务公开。SOAP公开操作。SOAP关注于访问命名操作,每个操作实现一些业务逻辑。虽然SOAP通常被称为web服务,但这是用词不当。SOAP与Web几乎没有任何关系。REST提供了基于uri和HTTP的真正Web服务。

为什么休息?

由于REST使用标准的HTTP,它在任何方面都要简单得多。 REST更容易实现,需要的带宽和资源更少。 REST允许许多不同的数据格式,而SOAP只允许XML。 REST由于对JSON的支持,可以更好地支持浏览器客户端。 REST具有更好的性能和可伸缩性。REST读取可以被缓存,基于SOAP的读取不能被缓存。 如果安全不是主要问题,而我们的资源有限。或者我们想要创建一个其他开发人员可以轻易公开使用的API,那么我们应该选择REST。 如果我们需要无状态的CRUD操作,那么就使用REST。 REST通常用于社交媒体、网络聊天、移动服务和谷歌地图等公共api。 RESTful服务为相同的资源返回各种MediaTypes,这取决于请求头参数“Accept”,如application/xml或application/json for POST和/user/1234。json或GET /user/1234.xml。 REST服务应该由客户端应用程序调用,而不是由最终用户直接调用。 REST中的ST来自于状态传输。您可以四处传输状态,而不是让服务器存储它,这使得REST服务具有可伸缩性。

为什么肥皂?

SOAP不是很容易实现,需要更多的带宽和资源。 与REST相比,SOAP消息请求处理速度较慢,并且不使用web缓存机制。 WS-Security:虽然SOAP支持SSL(就像REST一样),但它也支持添加了一些企业安全特性的WS-Security。 WS-AtomicTransaction:需要服务上的ACID事务,您将需要SOAP。 WS-ReliableMessaging:如果您的应用程序需要异步处理和有保证的可靠性和安全性级别。Rest没有标准的消息传递系统,并期望客户端通过重试来处理通信失败。 如果安全性是一个主要问题,并且资源不受限制,那么我们应该使用SOAP web服务。例如,如果我们正在为支付网关、金融和电信相关的工作创建web服务,那么我们应该使用SOAP,因为这里需要高安全性。

source1 source2

火休息

RESTful API是最著名的API类型。REST代表具象状态传输。

REST api是遵循标准化原则、属性和约束的api。

您可以使用HTTP谓词访问REST API中的资源。

REST api运行在一个简单的请求/响应系统上。您可以使用以下HTTP方法发送请求:

得到 帖子 把 补丁 删除 跟踪 选项 连接 头

下面是最常见的HTTP动词

GET(读取现有数据) POST(创建一个新的响应或数据) PATCH(更新数据) DELETE(删除数据)

客户机可以使用后跟端点的HTTP谓词发出请求。

端点(或路由)是您请求的URL。路径决定了您请求的资源。

当您向端点发送请求时,它将响应相关数据,这些数据通常格式化为JSON、XML、纯文本、图像、HTML等。

REST api还可以设计为许多返回不同类型数据的不同端点。使用REST API访问多个端点需要各种API调用。

一个实际的RESTful API遵循以下五个约束:

客户机-服务器体系结构 客户端向服务器请求数据,不需要第三方解释。 无国籍 无状态意味着每个HTTP请求都在完全隔离的情况下发生。每个请求都包含服务该请求所需的信息。服务器从不依赖以前请求的信息。没有国家。 缓存能力 响应可以显式或隐式地定义为可缓存或不可缓存,以提高可伸缩性和性能。例如,启用GET请求的缓存可以改善资源数据请求的响应时间。 分层 API体系结构的不同层应该协同工作,创建易于更新或调整的可伸缩系统。 统一的接口 客户端和服务器之间的通信必须使用独立于两者的标准化语言进行。这提高了可伸缩性和灵活性。

REST api非常适合需要它的项目

灵活的 可伸缩的 快

SOAP火

SOAP是一种必要的协议,它帮助引入api的广泛使用。

SOAP是简单对象访问协议的首字母缩写。

SOAP是一种标准化协议,它依赖于XML来发出请求和接收响应。

尽管SOAP是基于XML的,SOAP协议仍然被广泛使用。

SOAP API将数据作为服务提供,通常在执行涉及多个API调用或应用程序的事务时使用,其中安全性是主要考虑因素。

SOAP最初是在1998年为Microsoft开发的,它提供了一种标准机制,用于集成internet上的服务,而不考虑操作系统、对象模型或编程语言。

SOAP中的“S”代表Simple(简单),这是有原因的——SOAP可以以更低的复杂性使用,因为它在应用程序层对事务、安全性和其他功能的编码要求更少。

SOAP有三个主要特征:

SOAP API的可扩展性 SOAP允许扩展引入更健壮的特性,如Windows服务器安全性、寻址等等。 SOAP API的中立性 SOAP能够在广泛的协议上操作,如UDP、JMS、SMTP、TCP和HTTP。可以操作。 SOAP API的独立性 SOAP API响应完全基于XML。因此SOAP api是独立于平台和语言的。

开发人员继续争论使用SOAP和REST的利弊。最适合你的项目的是符合你的需求的。

SOAP api仍然是优先考虑安全性的公司实体和政府组织的首选,尽管REST在很大程度上主导了web应用程序。 SOAP比REST更安全,因为它使用WS-Security与安全套接字层一起进行传输 SOAP还具有更出色的事务可靠性,这是SOAP在历史上一直受到银行业和其他大型实体青睐的另一个原因。

很多答案完全忘记了超媒体控件(HATEOAS),这是REST的基础。其他一些人也提到了这个问题,但并没有很好地解释它。

本文将解释这两个概念之间的区别,而不涉及具体SOAP特性的细节。

在众多答案中已经涉及的许多问题中,我将强调SOAP允许定义契约、WSDL(定义所支持的操作)、复杂类型等。 SOAP面向操作,而REST面向资源。 就我个人而言,对于企业内部应用程序之间的复杂接口,我会选择SOAP,而对于与外部世界的公共的、更简单的、无状态的接口,我会选择REST。

REST vs SOAP不是要问的正确问题。

REST与SOAP不同,它不是一个协议。

REST是一种架构风格,是一种针对基于网络的软件架构的设计。

REST概念被称为资源。资源的表示必须是无状态的。它通过某种媒体类型来表示。媒体类型的一些例子包括XML、JSON和RDF。资源由组件操作。组件通过标准的统一接口请求和操作资源。在HTTP的情况下,这个接口由标准的HTTP操作组成,例如GET, PUT, POST, DELETE。

@Abdulaziz的问题确实说明了REST和HTTP经常同时使用的事实。这主要是由于HTTP的简单性及其与RESTful原则的非常自然的映射。

REST基本原则

客户端和服务器之间的通信

客户机-服务器体系结构具有非常明显的关注点分离。所有以RESTful风格构建的应用程序原则上也必须是客户机-服务器。

无状态的

对服务器的每个客户机请求都要求完全表示其状态。服务器必须能够在不使用任何服务器上下文或服务器会话状态的情况下完全理解客户端请求。因此,所有的状态都必须保存在客户机上。

缓存

可以使用缓存约束,从而将响应数据标记为可缓存或不可缓存。任何标记为可缓存的数据都可以被重用作为对相同后续请求的响应。

统一的接口

所有组件必须通过一个统一的接口进行交互。因为所有组件的交互都是通过这个接口进行的,所以与不同服务的交互非常简单。界面是一样的!这也意味着可以孤立地进行实现更改。这些变化不会影响基本组件的交互,因为统一的接口总是不变的。一个缺点是你被界面束缚住了。如果通过更改接口可以为特定服务提供优化,那么您就不走运了,因为REST禁止这样做。然而,从好的方面来看,REST是为web优化的,因此REST在HTTP上非常流行!

上述概念代表了REST的定义特征,并将REST体系结构与其他体系结构(如web服务)区分开来。值得注意的是,REST服务是web服务,但web服务不一定是REST服务。

请参阅REST设计原则的博客文章,了解更多关于REST和上述要点的详细信息。

编辑:根据评论更新内容