现在有些服务使用REST公开,而有些服务使用SOAP公开。有超过2000个服务。要求是在SOAP 1.2和REST API中公开所有这些(是的)。
我想知道我是否可以在集成层(最好是Mulesoft)上构建一些东西来执行此操作。集成层将调用服务,然后公开/转换" REST作为SOAP"和" SOAP作为REST"
我如何在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}
答案 0 :(得分:1)
SOAP是一种协议,REST是一种架构风格。它们的性质不同。
在您的用例中,您可以做的是
您可以创建一个Mule流,它将接受SOAP请求
然后您可以使用XPATH3提取值,将其存储在流量变量中,
然后使用表达式转换器引用为您的实际REST Web服务创建JSON请求: - How to transform json-to-json document in Mule ESB,
并使用Mule HTTP出站或请求组件将其发布到您的REST服务中,并将其发布到已公开的实际REST服务
从实际的REST服务获取JSON响应,并解析它并使用variable_lenth
提取值,并将值存储在流变量中
使用数据映射器或如果您使用的是Mule CE,请使用XSLT将SOAP响应创建回客户端参考:https://developer.mulesoft.com/docs/display/current/XSLT+Transformer
以上是在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