在 node-soap 中创建 SOAP 客户端时,WSDL 用于什么?

When creating a SOAP client in node-soap, what is the WSDL used for?

在服务器端,wsdl 用于 build/describe soap api,但是,当使用 node-soap 制作 soap 客户端时 - wsdl 用于什么?

家伙似乎把 XML 的每一点都写成 JSON 并将其全部添加为方法调用中的参数 - 不应该是 WSDL 和 node-soap包在这里做了一些魔术来简化请求所需的参数?

当您拥有 SOAP Web 服务时,您必须使用 SOAP 发送消息……显然。

这意味着无论您使用何种编程语言进行调用,或者通过何种编程语言构建响应,您都需要将对象编组和解组为 SOAP XML,反之亦然。

因为 SOAP 是一种协议,所以它对那些 XML 消息的外观有严格的规定。由于有严格的规则,您可以让工具生成这些消息并自动为您处理 marshal/unmarshal,前提是您对工具可以使用的服务 API 有一些描述。 And here is where the WSDL enters.

WSDL 描述了 SOAP Web 服务公开的契约,同时,客户端需要遵守契约才能进行调用。使用适当的工具,您可以从 WSDL 在服务器上生成骨架代码并在客户端生成存根代码来为您处理 SOAP 通信。这可以通过生成代码静态地完成,或者通过在执行期间读取 WSDL 并公开可用于调用服务操作的方法来动态地完成。

所以,为了回答你的问题,客户端的 node-soap 通过读取 WSDL 创建一个动态客户端,然后允许你像 JavaScript 方法一样在 Web 服务上调用 SOAP 操作,而不是打扰手写 SOAP XML。如果您没有客户端,您显然可以手动构建该 SOAP XML,但如果您已经有客户端,则应该使用它,因为它可以使事情变得更干净。