我正在WSO2 EI / ESB中构建一个简单的API。我将每个请求参数保存到如下属性:
<property expression="json-eval($.client_id)" name="client_id" scope="default" type="STRING"/>
然后使用有效负载工厂构建有效负载:
<payloadFactory media-type="json">
<format>
{
"req_type": "1",
"client_id": $1
}
</format>
<args>
<arg evaluator="xml" expression="get-property('client_id')"/>
</args>
</payloadFactory>
但是,如果我发送了一条空消息{}
(没有client_id),则$ 1参数中不会放置任何内容,并且所得的有效载荷将无效:
{
"req_type": "1",
"client_id:
}
我想知道的是,是否有一种在属性调解器中保存此表达式时设置默认值的方法?例如:
<property expression="json-eval($.client_id)" name="client_id" scope="default" type="STRING" defaultValue="0"/>
或类似的东西。
我知道我可以实现过滤器来检查该字段是否存在并对其进行验证,但是我发现该字段可能会变得有些混乱。
答案 0 :(得分:2)
不,您不能使用有效负载工厂。您必须从不同的解决方案中进行选择:
答案 1 :(得分:0)
我认为没有办法做到这一点。您将不得不使用过滤器。
答案 2 :(得分:0)
有条件的xpath? 这可能有效。试一下下面的代码。
<enrich>
<source clone="true" type="custom" xpath="0" />
<target action="replace" type="custom" xpath="" property="boolean(string-length(//client_id) != 0)" />
</enrich>