在WSO2 esb中定制/隐藏参数

时间:2017-04-24 08:00:00

标签: wso2 wso2esb

我的服务采用下面给出的参数

> <book category="cooking">
> <title lang="en">Everyday Italian</title>
> <author>Giada De Laurentiis</author> <year>2005</year>
> <price>30.00</price> </book>

现在我想隐藏参数,我希望我的客户端只能看到

<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
</book>

如何才能在WSO2 ESB中实现。 任何帮助都会非常有帮助。

3 个答案:

答案 0 :(得分:0)

有几种方法可以实现这一目标。您可以使用有效负载介体,通过xslt进行转换,在脚本介体等中进行。我认为对于您的情况我使用有效负载介体或xslt。完成payload / xslt后,您可以将transfomrmed有效负载发送回呼叫者。您可以在wso2页面上找到很多示例。

e.g。这里

https://docs.wso2.com/display/ESB481/PayloadFactory+Mediator

希望有所帮助。

答案 1 :(得分:0)

我假设你想隐藏一些参数给客户或消费者,这样他们就不必将它们作为请求的一部分传递给他们。例如,&#34;价格&#34;在你的情况下元素。

好吧,您可以使用相应的wsdl文件将代理创建为基于wsdl的代理,这样您就不会拥有&#34;价格&#34;请求中的元素或相应的复杂类型。现在,客户将无法看到&#34;价格&#34;请求中的元素,因为您正在描述没有&#34;价格&#34;的WSDL合同。元件。

希望有所帮助:)

答案 2 :(得分:0)

使用JS Mediator,您可以这样做:

<?xml version="1.0" encoding="UTF-8"?>
<localEntry key="xsltToTransform" xmlns="http://ws.apache.org/ns/synapse">
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="node() | @*">
    <xsl:copy>
        <xsl:apply-templates select="node() | @*"/>
    </xsl:copy>
</xsl:template>

<xsl:template match="price"/>

</xsl:stylesheet>
</localEntry>

上面的payloadFactory中介只是用来定义你在问题中提出的XML。

此外,您可以使用payloadFactory介体:

<xslt key="xsltToTransform"/>

最后,对于XSLT方法,您可以在synapse-config中定义本地条目文件:

{{1}}

然后,在中介序列中,只需调用已定义的本地条目。

{{1}}