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

Java 如何使用MuleSoft为同一web服务开发REST和SOAP接口?,java,web-services,rest,soap,mule-studio,Java,Web Services,Rest,Soap,Mule Studio,现在,一些服务使用REST公开,而另一些使用SOAP。有2000多项服务。要求在SOAP1.2和RESTAPI中公开所有这些内容(都是) 我想知道是否可以在集成层上构建一些东西(最好是Mulesoft)来实现这一点。集成层将调用服务,然后公开/转换“REST为SOAP”和“SOAP为REST” 客户端对MuleSoft进行SOAP调用 Mulesoft对实际服务进行REST调用 Mulesoft接收REST响应 Mulesoft使用上述响应并将其作为SOAP响应发送回客户端 我如何在MuleS

现在,一些服务使用REST公开,而另一些使用SOAP。有2000多项服务。要求在SOAP1.2和RESTAPI中公开所有这些内容(都是)

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

  • 客户端对MuleSoft进行SOAP调用
  • Mulesoft对实际服务进行REST调用
  • Mulesoft接收REST响应
  • Mulesoft使用上述响应并将其作为SOAP响应发送回客户端
  • 我如何在MuleSoft实现上述流程?一个算法将非常有用

    提前谢谢

    例如:changeName(字符串id、字符串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>
    

    SOAP是一种协议,REST是一种体系结构风格。它们在本质上是不同的

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

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

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

  • 然后使用Expression transformerreference:-,为实际的REST web服务创建JSON请求

  • 然后使用Mulehttpoutboundrequest组件将其发布到您的REST服务,并将其发布到已公开的实际REST服务

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

  • 使用数据映射器,或者如果使用Mule CE,则使用XSLT创建SOAP响应返回到客户机ref:

  • 以上是在Mule中创建客户端api/流的最简单方法,它将接受客户端SOAP请求,并将您的REST服务请求转换为JSON请求,并通过HTTP发布到实际服务

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


    这是创建REST-to-SOAP的方法 1.使用http listner创建mule流以接受SOAP请求 2.使用Datamapper将xml转换为json格式 3.使用http外部绑定端点调用REST服务并传递json负载 4.使用datamapper将响应json转换为xml

    这是要休息的肥皂 1.使用http listner创建mule流以接受REST请求 2.使用Datamapper将json转换为xml格式 3.使用web服务使用者调用SOQP服务并传递xml负载 4.使用datamapper将响应xml转换为json

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