【问题标题】:How to develop REST and SOAP interface for same web service using MuleSoft?如何使用 MuleSoft 为相同的 Web 服务开发 REST 和 SOAP 接口?
【发布时间】:2015-06-25 15:34:23
【问题描述】:

现在有些服务使用 REST 公开,而有些使用 SOAP。有超过2000个服务。要求是在 SOAP 1.2 和 REST API 中公开所有这些(是的)。

我想知道是否可以在集成层(最好是 Mulesoft)上构建一些东西来做到这一点。集成层将调用服务,然后公开/转换“REST as SOAP”和“SOAP as REST”

  1. 客户端对 MuleSoft 进行 SOAP 调用
  2. Mulesoft 对实际服务进行 REST 调用
  3. Mulesoft 收到 REST 响应
  4. Mulesoft 使用上述响应并将其作为 SOAP 响应发送回客户端

如何在 MuleSoft 中实现上述流程?算法会非常有用。

提前致谢。

例如:changeName(string id, string newName) 应该从 SOAP 调用:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:enterprise.soap.sforce.com">
   <soapenv:Header>
    </soapenv:Header>
   <soapenv:Body>
      <urn:changeName>
         <urn:id>1001</urn:id>
         <urn:newName>Steve Jobs</urn:newName>
      </urn:changeName>
   </soapenv:Body>
</soapenv:Envelope>

AND 也可以形成 REST,例如

http://www.mywebserviceurl/changeName/
POST 
{id:1001, name:Steve Jobs}

【问题讨论】:

    标签: java web-services rest soap mule-studio


    【解决方案1】:

    SOAP 是一种协议,而 REST 是一种架构风格。而且它们的性质不同。

    在您的用例中,您可以做的是

    1. 您可以创建一个 Mule 流,它将接受 SOAP 请求

    2. 然后您可以使用XPATH3 提取值,将其存储在流变量中,

    3. 然后使用 Expression Transformer 参考为您的实际 REST Web 服务创建 JSON 请求:- How to transform json-to-json document in Mule ESB,

    4. 并使用 Mule HTTP outboundrequest 组件将其发布到您的 REST 服务到已经公开的实际 REST 服务

    5. 从实际的 REST 服务中获取 JSON 响应,并使用 json:json-to-object-transformer 对其进行解析并提取值,并将值存储在流变量中

    6. 使用数据映射器,或者如果您使用 Mule CE,请使用 XSLT 创建 SOAP 响应返回给客户端参考:https://developer.mulesoft.com/docs/display/current/XSLT+Transformer

    以上是在 Mule 中创建 client api/flow 的最简单的方法,它将接受来自 clientSOAP 请求并转换JSON 请求为您的 REST 服务公开,并将通过 HTTP 将其发布到实际服务。

    通过这种方式,您可以将 Mule 作为 SOAP 调用和实际 REST 服务之间的接口应用程序

    ,

    【讨论】:

    • 同一个 Mule 项目能否同时公开 SOAP 和 REST 端点?
    【解决方案2】:

    这是您可以为 REST 到 SOAP 创建的方式 1.用http listner创建mule flow来接受SOAP请求 2.使用Datamapper将xml转换成json格式 3.使用http outbound端点调用REST服务并传递json有效载荷 4.使用datamapper将response json转为xml

    这是 SOAP 到 REST 1.用http listner创建一个mule流来接受REST请求 2.使用Datamapper将json转为xml格式 3. 使用 Web 服务消费者调用 SOQP 服务并传递 xml 有效负载 4.使用datamapper将response xml转成json

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-20
      • 1970-01-01
      • 2020-08-25
      • 2011-06-09
      • 1970-01-01
      • 1970-01-01
      • 2017-01-25
      • 1970-01-01
      相关资源
      最近更新 更多