3

(不是我应该使用休息还是肥皂的副本。那个问题只有 1 个答案,除了开销之外没有提供很多论据)。

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

现在的问题:

不久前,我开始使用 Soap(PHP / Zend_Soap_Server,Zend_Soap_Autodiscover)设置一个新的 api。虽然我已经弄清楚如何使用肥皂,但复杂性让我怀疑这是否是未来维护的好选择。

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

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

如果您认为您的答案在 REST 和 SOAP 之间的平衡中悬而未决,并且特定的依赖项或功能会影响规模,请务必询问您需要知道的任何内容。我会尽快回复。

api功能的简短列表:

  • 验证
  • 为前端执行数学函数
  • 向前端提供二进制文件(发票)
  • 各种信息的基本CRUD

api的位置基本如下:

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

提前感谢您的时间..

4

1 回答 1

28

这当然是一个非常有争议的话题,但与此同时,出于多种原因,大多数新服务都是 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 解决的问题)

如果您查看 Internet 上的一些主要 API(例如 Google、Facebook、Twitter 等),您会发现很多 REST,而几乎没有 SOAP。那些确实有 SOAP 接口的人正在弃用或完全放弃它们,因为几乎没有理由再坚持使用它了。

事实上,许多大型服务正在更进一步,只提供 JSON 格式的 REST 服务,而不是 XML 或两者兼而有之,因为与 SOAP 之上的 REST 一样,JSON 在大小和简单性方面优于 XML继续支持 XML 没有多大意义。


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

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

从服务器的角度来看,我真的看不出选择 SOAP 而不是 REST 的任何技术优势。

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

于 2012-12-12T23:39:57.017 回答