为新的Api使用SOAP或REST

(不是重复的我应该使用rest还是soap。这个问题只有1个答案,除了开销外,没有提供很多参数)。

在将此问题标记为重复之前,请考虑我正在寻找在我之前作出选择的人的答案,并根据他们自己的经验解释他们的原因。 简单说明“开销”或“更复杂”的答案不适合该配置文件。

现在提出这个问题:

一段时间后,我开始使用Soap设置一个新的API(PHP / Zend_Soap_Server,Zend_Soap_Autodiscover)。 尽管我已经知道如何使用肥皂,但复杂性让我怀疑这是否是未来维护的好选择。

我听说过REST,但没有任何经验。

所以问题是:REST vs SOAP的优缺点是什么?当创建一个全新的api(相当复杂的api,几十种使用ssl的方法,必须具有相当的安全性等),REST或SOAP时,你有什么建议?

如果你认为你的答案在REST和SOAP之间的平衡中是悬而未决的,并且一个特定的依赖或者特性会导致这个规模下降,那么一定要问你需要知道的任何东西。 我会尽快回答。

api功能的简短列表:

  • 认证
  • 为前端执行数学函数
  • 向前端提供二进制文件(发票)
  • 各种信息的基本CRUD
  • api的地方基本如下:

    互联网 - >网站 - > [内部网络] - > API /后端 - >数据库

    谢谢你的时间提前..


    这当然是一个非常有争议的话题,但与此同时,由于多种原因,大多数新服务都是REST。 我不会介绍两者之间的差异(正如有据可查),但更多的原因是我认为您将在今天(2012年)使用REST创建新服务:

  • REST非常简单,基本上只是建立在HTTP之上
  • 您可以使用Web浏览器或类似curl或httpie来测试(并调试)REST服务。 是的,这在技术上也可以用SOAP来实现,但是你必须对SOAP模式有所了解。
  • 同样,只要您有访问HTTP的方法,您就可以构建REST客户端。 SOAP需要一个支持SOAP的库
  • REST更多的是一种风格,建立在HTTP之上,而SOAP则是一个在HTTP之上的整个协议(这也是一种协议)
  • SOAP最终采用了WS-Security,WS-Encryption等疯狂的扩展协议(实际上,这对于几十年前HTTP解决的其他问题的委员会解决方案非常复杂)
  • 如果您环顾互联网上的一些主要API(例如Google,Facebook,Twitter等),您会发现很多REST,以及很少或没有SOAP。 那些拥有SOAP接口的用户会弃用或完全放弃它们,因为没有理由继续使用它。

    实际上,许多大型服务正在向前迈进一大步,只是为他们的REST服务提供JSON格式,而不是XML,或者两者兼而有之,因为像SOAP之类的REST一样,JSON在大小和简单性方面有很多优势继续支持XML没有多大意义。


    与SOAP相比,REST几乎没有缺点。

    关于我能想到的唯一的实际考虑是从客户的角度来看。 使用SOAP(由于WSDL,假设您生成了一个),您可以在服务中指定一个支持SOAP的IDE(如VisualStudio),并且它将基于远程服务生成本机客户端代理API。 这对于快速启动和运行来说有点不错,但有其自身的一些缺点:它迫使您使用服务中定义的对象(而使用REST,只要数据映射可以使用自己的对象定义),并且根据远程服务如何处理版本控制(或不是)以及如何使用它,您可能最终不得不更新应用程序的主要块,因为命名更改很简单。

    从服务器的角度来看,我看不出任何技术上的好处,无论选择SOAP还是REST。

    TL; DR:SOAP不一定是坏的,只是REST更好。

    链接地址: http://www.djcxy.com/p/71385.html

    上一篇: Use SOAP or REST for a new Api

    下一篇: How to choose between JAX