我正在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"/>
或类似的东西。
我知道我可以实现过滤器来检查该字段是否存在并验证它但我发现它可能会变得有点混乱。
不,你不能使用payloadFactory。您必须选择不同的解决方案:
我认为没有办法做到这一点。您将不得不使用过滤器。
条件xpath?这可能会奏效。玩下面的代码。
<enrich>
<source clone="true" type="custom" xpath="0" />
<target action="replace" type="custom" xpath="" property="boolean(string-length(//client_id) != 0)" />
</enrich>