我看到多个问题,从Web服务本身的开发中询问哪个更好,SOAP或REST。但是,从客户的角度来看,不是很多关于利弊的讨论。如果您要编写一个应用程序并在两个Web服务API之间做出选择,除了一个是SOAP而另一个是REST之外,它们在各个方面都相似,您会选择哪个以及为什么? REST具有允许XML或JSON的额外好处,两者之间是否还有其他主要区别?
答案 0 :(得分:6)
无论如何,这里对你的问题有点奇怪的回答。选择应取决于几件事:
哪个API具有更好的文档可能是更好的API使用。这不是保证,但它是一个很好的指标。无论SOAP是否优于REST都是无关紧要的,反之亦然,如果实现是垃圾,你将会受到任何影响。
如果这是一个由初创公司创建的全新API,可能会在明年发生重大变化,那么REST api可能更容易管理。 SOAP apis往往非常脆弱,并且由于生成的客户端代理代码而需要频繁的客户端重新编译。
尽管有1001个理由我讨厌客户端生成的代理代码,但是如果你需要让一些工作变得非常快。在WSDL块中指向您喜欢的IDE将很快为您提供一个可以使用的对象模型。这绝对是让事情发挥作用的最快方式。
如果客户将要存在多年,那么我认为值得投入时间来创建一个好的REST客户端。基于REST的方法对于随时间发生的不可避免的变化更具弹性。对于版本REST客户端而言,还有比基于SOAP的客户端更多的选项。
最后一项是关于REST API是否是真正的REST接口的一些试金石。如果文档是http端点的目录,那么您可以非常放心,设计人员不知道REST是什么,所以远离它。
答案 1 :(得分:6)
你做出了一个有缺陷的假设。
你说:
如果你要写一个应用程序 并在两个Web之间进行选择 每个服务API都相似 方式除了一个是SOAP和另一个 是REST,你会选择和 为什么呢?
事实上,SOAP API很可能与REST系统完全不同,因此您无法在此级别进行真正的比较。
REST是一种架构,而不是协议。 SOAP是一种协议,但不是一种架构。虽然可能,但您不太可能在SOAP协议之上创建REST体系结构,因为SOAP有效负载不会为REST系统提供很多。
SOAP系统往往更基于RPC,REST系统基于资源。这两者在操作和设计上存在显着差异。
就使用SOAP vs XML / JSON over HTTP(很多人错误地将其与REST混淆)而言,SOAP系统的主要好处是可以更容易地与系统连接和发布系统的工具。
今天,许多IDE和服务器都可以轻松发布和使用SOAP Web服务。
在Java中,发布SOAP接口可以更多地将“@WebService”粘贴到文件中并进行部署。使用Web服务只不过是将IDE指向WSDL(在Web服务发布时方便地为您创建),单击按钮,然后让工具创建编组数据和与服务通信所必需的代理。
基于HTTP的XML / JSON有一个好处,你可能会跳过使SOAP自动化“容易”的大部分锅炉板。当然,Javascript非常擅长使用JSON,所以如果你的客户端空间包括Web浏览器,那么这可能是一个因素。简而言之,如果你说浏览器到服务器,基于HTTP的XML / JSON工作得很好,实际的REST架构也可以很好地工作。
如果您在服务器之间讨论RPC,那么由于现有的工具,SOAP更容易实现。