XML-RPC是否被用作公共API实现的协议?

时间:2011-01-01 19:46:55

标签: web-services api language-agnostic xml-rpc

我需要为我正在处理的项目实现一个Web API。我读到有很多标准协议可以做到:XML-RPC,SOAP,REST。显然,XML-RPC是我看到的最容易实现和使用的,但我没有找到任何关于使用它来实现API的内容。相反,我找到了许多关于在PHP中创建REST API的教程。是否有使用XML-RPC实现公共Web API的反指示?

另外,更一般地说,我可以(有点)为我的API定义一个自定义协议,以保持简单(即只接受包含我需要的参数的GET请求):这会不是很糟糕?是否必须使用标准协议?

6 个答案:

答案 0 :(得分:1)

如果您的应用程序非常简单,那么简单地使用GET请求和传入参数就没有错。您不必使用像SOAP这样的标准。

从技术上讲,如果你发送的是实体,你会使用REST。例如,如果您有要传输的域对象,则可以通过GET检索这些对象,通过PUT通过标准URL进行更新。虽然很多人将上面的第一个选项称为休息,但这并不完全正确。

SOAP / XML-RPC是在太阳下为每个平台都有库的协议,但由于它们的XML膨胀和(相对)复杂的模式而逐渐死亡。我不是这些协议的忠实粉丝,它们从未被广泛使用过。人们可能会争辩说,但是试着找一家大型网络公司使用其公共协议,然后我会把那个人当作三明治。

似乎JSON正在接管全世界。它结构紧凑,解析速度快,是Web应用程序的理想选择,因为您可以将其直接导入到javascript中。只需使用返回JSON的HTTP GET就可以获得很大的效果。

答案 1 :(得分:0)

为什么不使用SOAP,这在许多平台上实现起来要容易得多。

也许如果您使用的是不支持SOAP的平台,那么使用XML-RPC可能会更容易。但是,大多数平台都没有XML-RPC支持。

SOAP协议基于XML-RPC,这使得XML-RPC几乎没那么有用。

答案 2 :(得分:0)

要回答您的问题,我认为SOAP或RESTful API最适合实施,因为您的API的消费者可能会有更多使用它们的经验。

此外,您最后一点,您谈到接受具有特定参数的get请求,这是设计RESTful API的一个非常重要的部分。如果您认为这很容易实现,我强烈建议您使用您选择的语言进行构建RESTful API的研究,因为我认为您会发现它非常接近您提出的备用解决方案。

答案 3 :(得分:0)

我们的应用程序提供所有三种协议

  • 普通HTTP
  • XML RPC
  • SOAP

根据我们的经验,初学者或面向资源的用户使用普通HTTP。有些(不是很多)选择使用XML RPC。大多数情况下,当他们是主题的新手,并没有很多服务API。高端用户和喜欢技术的用户选择SOAP。

我认为XML-RPC的日子结束了。要么是普通的HTTP POST(我更喜欢你能够定义一个干净的服务签名,好的候选者只有原始类型,没有真正意义上的对象)或者如果你没有资源限制就选择SOAP。

我甚至更喜欢JSON RPC over XML RPC等“更新”的版本。如果您需要更多简单的原始参数签名,JSON可能是一个不错的选择。

答案 4 :(得分:0)

缺点是,当您可以使用已经存在的操作时,您将定义自己的语义来操作资源(您的客户端开发人员需要学习)。

HTTP定义了可以使用的操作/动作/动词。如果你使用它,你可以提供一个统一的界面,api用户可以打电话而不必被迫学习你的新计划。

这样做可以让您在REST中实现一个有用的约束。

答案 5 :(得分:0)

好。我不得不为一家公司制作一个magento android应用程序,并且在三个SOAP,REST和XML-RPC之间感到困惑,最终使用XML RPC - 非常棒且简单:D