(不是Should i use rest or soap的重复。这个问题只有一个答案,除了开销之外没有提供很多参数。)
在将此问题标记为重复之前,请考虑我正在寻找在我之前作出选择的人的答案,并根据他们自己的经验解释他们的理由。简单地说“开销”或“更复杂”的答案不符合该档案。
现在提出问题:
前段时间我开始使用Soap(PHP / Zend_Soap_Server,Zend_Soap_Autodiscover)设置新的api。虽然我已经想出如何使用肥皂,但复杂性让我想知道这是否是未来维护的好选择。
我听说过REST,但没有任何使用经验。
所以问题是:REST与SOAP的优缺点是什么?在创建一个全新的api(相当复杂的api,几个方法,使用ssl,必须具有良好的安全性等)时,你有什么建议,REST或SOAP。
如果您认为您的答案在REST和SOAP之间取得平衡,并且特定的依赖项或功能会缩小规模,请务必询问您需要知道的任何内容。我会尽快回答。
api功能的简短列表:
api的位置基本如下:
互联网 - >网站 - > [内部网络] - > API /后端 - >数据库
感谢您提前抽出时间..
答案 0 :(得分:28)
这当然是一个非常有争议的话题,但与此同时,出于多种原因,大多数新服务都是REST。我不会介绍两者之间的差异(因为有详细记录),但更多我认为你今天(2012年)使用REST构建新服务的原因:
如果你浏览一下互联网上的一些主要API(例如Google,Facebook,Twitter等),你会发现很多REST,而且几乎没有SOAP。那些拥有SOAP接口的人正在弃用或完全放弃它们,因为没有理由再坚持使用它了。
事实上,许多大型服务更进一步,只提供带有JSON格式的REST服务,而不是XML或两者兼而有之,因为像REST over SOAP一样,JSON在大小方面具有很多优势。简单的XML,继续支持XML没有多大意义。
与SOAP相比,REST几乎没有任何缺点。
关于我能想到的唯一实际考虑因素是从客户的角度来看。使用SOAP(因为WSDL,假设您生成一个),您可以在服务(例如VisualStudio)上指向支持SOAP的IDE,它将基于远程服务生成本机客户端代理API。这在快速启动和运行方面有点不错,但有一些缺点:它会强制您使用服务中定义的对象(而使用REST,只要数据映射,您就可以使用自己的对象定义in),并且取决于远程服务如何处理版本控制(或不使用)以及如何使用它,您可能最终必须更新应用程序的主要部分,因为它有一些简单的命名更改。
从服务器的角度来看,我真的看不到选择SOAP over REST的任何技术优势。
TL; DR:SOAP不一定坏,只是REST更好。