gpt4 book ai didi

rest - WSO2 API 管理器将 SOAP 转换为 REST

转载 作者:行者123 更新时间:2023-12-01 00:49:36 26 4
gpt4 key购买 nike

是否可以直接在 API 管理器中将 SOAP 服务发布为 REST API?是否可以在调用 SOAP 时转换调用并将 REST 公开给最终用户?

如果可能,怎么做?
谢谢。

最佳答案

这可能就是您正在寻找的。这可以如下所述完成。

如果您想以 RESTful 方式使用相同的 API 公开多个操作,您可以修改 post 中的顺序使用以下准则。

1) 在 API Manager 中设计 REST API 时,创建一个请求 URI 以映射到后端 SOAP 服务中的每个操作。

2) 使用过滤器调解器(在编程中充当条件语句),您可以从请求 URI(操作)中过滤出并相应地构造所需的负载。

以下 block 将根据您映射后端 Web 服务的各种操作重复。

这里的逻辑是,如果 API 的请求 URI 是到 SOAP 服务的操作 Y 的 X 路由。

<!-- this filters out the operations of your API -->

<property expression="json-eval($.operation)" name="operation" />
<filter regex="menu" source="$ctx:operation">

<header description="SOAPAction" name="SOAPAction" scope="transport" value="http://ws.cdyne.com/PhoneVerify/query/CheckPhoneNumber"/>

<!-- We are storing the input values which the end users input for these values into properties -->

<property name="uri.var.phoneNumber" expression="$url:PhoneNumber"/>
<property name="uri.var.licenseKey" expression="$url:LicenseKey"/>

<!-- Since we do not want the URL pattern we mentioned to be sent to the backend we need to add the below property to remove it -->

<property name="REST_URL_POSTFIX" scope="axis2" action="remove"/>

<!-- Now we need to create the actual payload which the backend requires. For that we use the payload factory mediator -->

<payloadFactory description="transform" media-type="xml">
<format>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:quer="http://ws.cdyne.com/PhoneVerify/query">
<soapenv:Header/>
<soapenv:Body>
<quer:CheckPhoneNumber>
<quer:PhoneNumber>$1</quer:PhoneNumber>
<quer:LicenseKey>$2</quer:LicenseKey>
</quer:CheckPhoneNumber></soapenv:Body>
</soapenv:Envelope>
</format>
<args>
<arg expression="get-property(‘uri.var.phoneNumber’)"/>
<arg expression="get-property(‘uri.var.licenseKey’)"/>
</args>
</payloadFactory>

有关上述用例的更多信息,您可以引用此 post作为有关如何使用此类自定义扩展序列来映射后端 SOAP Web 服务操作的引用。有了它,您就可以直接将其公开为 REST API

或者您可以简单地在 WSO2 API 云或 WSO2 API 管理器中创建一个基于 SOAP 的 API,然后将请求有效负载与在 SOAP 操作 header 中发送的 SOAP 操作一起传递,以便您可以调用后端 Web 的不同操作服务。您可以在下图中看到它是如何使用的。

Managing WSDL operations using a single API

希望这对您有所帮助。

问候。

关于rest - WSO2 API 管理器将 SOAP 转换为 REST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14505070/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com