我看到多个问题,从Web服务本身的开发中询问哪个更好,SOAP或REST.但是,从客户的角度来看,不是很多关于利弊的讨论.如果您要编写一个应用程序并在两个Web服务API之间进行选择,除了一个是SOAP而另一个是REST之外,它们在各个方面都相似,您会选择哪个以及为什么?REST具有允许XML或JSON的额外好处,两者之间是否还有其他主要区别?
哇,10个小时,到目前为止这个问题没有答案.通常这些类型的问题会在瞬间被提升.
无论如何,这里有一些奇怪的答案你的问题.选择应取决于几件事:
这两个API的文档有多好.
API的可能性有多大变化.
我需要多长时间来生产客户
客户可能需要多长时间才能使用.
REST api文档是否包含他们返回的带有XML/JSON的Url列表?
无论哪种API具有更好的文档,都可能是更好的API.这不是保证,但它是一个很好的指标.如果实现是垃圾,那么SOAP是否优于REST并不重要,反之亦然.
如果这是一个由初创公司创建的全新API,可能会在明年发生重大变化,那么REST api可能更容易管理.SOAP apis往往非常脆弱,并且由于生成的客户端代理代码而需要频繁的客户端重新编译.
尽管有1001个理由我讨厌客户端生成的代理代码,但是如果你需要让一些工作变得非常快.在WSDL块中指向您喜欢的IDE将很快为您提供一个可以使用的对象模型.这绝对是获得成功的最快方式.
如果客户将要存在多年,那么我认为值得投入时间来创建一个好的REST客户端.基于REST的方法对于随时间发生的不可避免的变化更具弹性.对于REST客户端而言,与基于SOAP的客户端相比,还有更多选择.
最后一项是关于REST API是否是真正的REST接口的一些试金石.如果文档是http端点的目录,那么您可以非常放心,设计人员不知道REST是什么,所以远离它.
你做了一个有缺陷的假设.
你说:
如果您要编写一个应用程序并在两个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更容易实现.