如何使用MuleSoft为同一Web服务开发REST和SOAP接口?

时间:2015-06-25 15:34:23

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

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

我想知道我是否可以在集成层(最好是Mulesoft)上构建一些东西来执行此操作。集成层将调用服务,然后公开/转换" REST作为SOAP"和" SOAP作为REST"

Flow of call

  1. 客户端向MuleSoft发送SOAP调用
  2. Mulesoft对实际服务进行REST调用
  3. Mulesoft收到REST响应
  4. Mulesoft使用上述响应并将其作为SOAP响应发送回客户端
  5. 我如何在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>
    

    并且还形成REST,例如

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

2 个答案:

答案 0 :(得分:1)

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

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

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

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

  3. 然后使用表达式转换器引用为您的实际REST Web服务创建JSON请求: - How to transform json-to-json document in Mule ESB

  4. 并使用Mule HTTP出站请求组件将其发布到您的REST服务中,并将其发布到已公开的实际REST服务

  5. 从实际的REST服务获取JSON响应,并解析它并使用variable_lenth提取值,并将值存储在流变量中

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

  7. 以上是在Mule中创建客户端 api / flow的简单且最简单的方法,它将接受来自客户端 SOAP 请求并进行转换进入 JSON 请求显示您的 REST 服务,并将其通过 HTTP 发布到实际服务。

    通过这种方式,您可以将Mule作为 SOAP 调用与实际 REST 服务

    之间的界面应用程序

答案 1 :(得分:0)

这是您可以为REST创建SOAP的方式 1.使用http listner创建一个mule流以接受SOAP请求 2.使用Datamapper将xml转换为json格式 3.使用http out bound endpoint调用REST服务并传递json有效负载 4.使用datamapper将响应json转换为xml

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