如何在 RESTful API 中使用 SOAP 协议
随着需求和技术的不断发展,RESTful API 已经成为了现代应用程序的标配,但是,仍有一些遗留的系统和组织仍然使用 SOAP 协议。如果你正在开发一个新系统,它需要访问一个仅提供 SOAP API 的系统,那么你该怎么办呢?在本文中,我们将深入研究如何在 RESTful API 中使用 SOAP 协议。
API 是什么?
API 指的是应用程序编程接口,它是在两个不同的应用程序之间交换数据的方法。 API 可以是任何形式的,例如,Web 服务、SOAP 和 RESTful 等。
RESTful API 是什么?
RESTful API 是一种通信协议,通过 World Wide Web(WWW)中的 HTTP 协议交换数据。它是一种简单的机制,数据交换通常是 XML 或 JSON 变体格式。
SOAP 是什么?
SOAP(简单对象访问协议)是一种基于 XML 的协议,用于将信息从一个应用程序传输到另一个应用程序。 SOAP 简化了应用程序之间的通信。这种协议支持 RPC(远程过程调用)。
RESTful API 和 SOAP 之间的区别
RESTful API 和 SOAP 之间有一些显著的区别:
- RESTful API 不需要属性或请求来确定数据或操作。它只是通过资源路径(如 https://example.com/customers/1234)来确定数据或操作。
- SOAP 是一种基于 XML 的协议,它需要包含属性和请求确定数据或操作的 SOAP 消息。
- RESTful API 提供了在不同服务器之间交换数据所需的一组规则。
- SOAP 协议具有内置的协议扩展性,这意味着,如果需要增加或修改某些东西,不必更改整个请求或消息。
- RESTful API 的优点是它是可缓存和幂等的 - 这样可以减少服务器使用的带宽和网络延迟。
- SOAP 协议提供了更强大的安全性,如消息完整性、身份验证、数据保密性。
RESTful API 如何使用 SOAP 协议
对于需要在 RESTful API 中使用 SOAP 协议的系统,可以通过以下步骤进行:
- 将 SOAP 消息转换为 JSON 或 XML 格式
在 RESTful 服务器上,可以使用任何可用的库将 SOAP 消息转换为 RESTful API 所支持的格式,如 XML 或 JSON。
- 将转换后的 SOAP 消息发送到 RESTful API
RESTful API 可以像处理任何其他请求一样处理转换后的 SOAP 消息。这通常涉及到在数据存储中查找或修改数据。
- 将 RESTful API 的响应转换回 SOAP 消息
由于 RESTful API 通常返回 JSON 或 XML,必须将响应转换回 SOAP 格式。
示例代码
在下面的示例代码中,我们将通过 Node.js 的 "request" 模块使用 SOAP 协议。我们将带着一个完全实现请求的例子开始。假设我们分配给所有的订阅者唯一的ID。
var request = require('request'); var url = 'http://example.com/webservicex2/service.asmx'; var data = 'DUMMY';
request.post({ url: url, headers: { 'SOAPAction': "http://www.example.com/GetStockPrice", 'Content-Type': 'text/xml' }, body: data }, function(error, response, body){ console.log(body); });
通过这种方式调用 SOAP API,我们使用 SOAPAction 标头指定操作,Content-Type 标头指定 HTTP 主体的 MIME 类型,然后在主体中指定 SOAP 操作和请求的内容。
无论如何,我们将使用一些库来转换 SOAP 请求。在下面的示例代码中,我们将使用 "soap" 模块进行转换。
var soap = require('soap'); var url = 'http://example.com/webservicex2/service.asmx';
soap.createClient(url, function(err, client) { client.GetStockPrice({StockName: 'DUMMY'}, function(err, result) { console.log(result); }); });
总结
本文介绍了在 RESTful API 中使用 SOAP 的过程。我们看到了 RESTful API 和 SOAP 之间的显著区别,以及实现转换的步骤。RESTful API 提供了一组可缓存和幂等的规则,可减少服务器使用的带宽和网络延迟。SOAP 协议提供了更强大的安全性,如消息完整性、身份验证、数据保密性。通过这种方式,可以实现访问那些仅提供 SOAP API 的系统。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/652e57f67d4982a6ebf61b5b