比较和对比REST和SOAP Web服务?

Hup*_*ppo 75 rest soap web-services

我目前发现类似的是使用互联网协议(HTTP)在消费者和提供者之间交换数据.

不同之处是:

  1. SOAP是一种基于XML的消息协议,而REST是一种架构风格
  2. SOAP使用WSDL进行消费者和提供者之间的通信,而REST只使用XML或JSON来发送和接收数据
  3. SOAP通过调用RPC方法调用服务,REST只是通过URL路径调用服务
  4. SOAP不会返回人类可读的结果,而REST结果是可读的,只是简单的XML或JSON
  5. SOAP不仅仅是通过HTTP,它还使用其他协议,如SMTP,FTP等,REST仅通过HTTP

这就是我所知道的他们之间的差异.任何人都可以纠正我并添加更多.

ios*_*seb 54

SOAP使用WSDL进行通信btw使用者和提供者,而REST只使用XML或JSON来发送和接收数据

WSDL定义了客户端和服务之间的契约,并且本质上是静态的.在REST的情况下,合同有些复杂,并且由HTTP,URI,媒体格式和应用程序特定协调协议定义.与WSDL不同,它具有高度动态性.

SOAP不会返回人类可读的结果,而REST结果是可读的,只是简单的XML或JSON

这不是真的.纯XML或JSON根本不是RESTful.它们都没有定义任何控件(即链接和链接关系,方法信息,编码信息等......),这些控件是针对REST的,因为消息必须是自包含的,并且协调代理/客户端和服务之间的交互.

通过链接+语义链接关系,客户端应该能够确定下一个交互步骤是什么,并遵循这些链接并继续与服务进行通信.

消息不必是人类可读的,可以使用神秘的格式并构建完全有效的REST应用程序.消息是否是人类可读的并不重要.

因此,纯XML(application/xml)或JSON(application/json)不足以构建REST应用程序.使用具有强语义意义的这些通用媒体类型的子集并提供足够的控制信息(链接等)来协调客户端和服务器之间的交互是合理的.

REST仅通过HTTP

不是这样,HTTP是最广泛使用的,当我们谈论REST Web服务时,我们只假设HTTP.HTTP定义了与其方法(GET,POST,PUT,DELETE,PATCH等)的接口以及可以统一用于与资源交互的各种头.这种均匀性也可以通过其他协议来实现.

PS非常简单但非常有趣的REST解释:http://www.looah.com/source/view/2284