在 WSO2 API 中隐藏或删除 XML 响应中的一些数据

Hiding or removing some data from XML response in WSO2 API

我正在使用 WSO2 在内部公开 APIs。 API 用作 pass-through 代理(或网关),将请求转发到 back-end-service 并仅添加一些 headers。 现在,我想在拦截来自 back-end 平台的响应时隐藏一些信息。

我试过过滤器调解器,但我不确定我的方法是否正确。

下面是我想做的事的例子。

实际响应(as-is):

<member>
<name>ABC</name>
<value>abc</value>
</member>
<member>
<name>XYZ</name>
<value>xyz</value>
</member>

希望的响应(在 remove/hide 操作后发送给客户端):

<member>
<name>ABC</name>
<value>abc</value>
</member>

有什么帮助吗?

您可以尝试使用 Enrich 介体修改正文。

根据您的代码片段,enrich mediator 可以如下所示,并且可以在调用端点后立即添加。

<enrich>
  <source clone="true" xpath="$body//member[1]"/>
  <target type="body"/>
</enrich>

在上面的 enrich mediator 中,它将检索响应正文的第一个 member 标记,并将其设置为正文。

您可以参考 Enrich 中介文档 [1] 以进一步参考。

[1] https://docs.wso2.com/display/EI610/Enrich+Mediator

它对我有用,谢谢。但是我可以通过引用成员的值来做同样的动作吗?换句话说,我可以把这个代码:

 <enrich>
  <source clone="true" xpath="$body//name[ABC]"/>
  <target type="body"/>
</enrich>