Как я могу узнать, есть ли в теле json содержимое? - PullRequest
1 голос
/ 06 ноября 2019

У меня есть фильтр для выполнения некоторого кода, если тело имеет тело или нет, потому что медиатор обогащения не может работать с нулевым телом, но я не знаю выражения

Я пробовал логическое значение ($ body), ноне работает

<filter regex="default_regex" source="boolean($body)">
<then>
    <enrich>
       <source clone="true" type="body"/>
       <target property="payload" type="property"/>
    </enrich>
 </then>
 <else>
    <log level="full"/>
 </else>

1 Ответ

0 голосов
/ 06 ноября 2019

Не могли бы вы обновить регулярное выражение до true и попробовать его.

<filter regex="true" source="boolean($body)">
<then>
    <enrich>
       <source clone="true" type="body"/>
       <target property="payload" type="property"/>
    </enrich>
 </then>
 <else>
    <log level="full"/>
 </else>

А если оно не получает полезную нагрузку json, попробуйте назначить его свойству и выполнить фильтр.

<property name="JsonBody" expression="json-eval($.)/>
<filter regex="true" source="boolean($ctx:JsonBody)">
<then>
    <enrich>
       <source clone="true" type="body"/>
       <target property="payload" type="property"/>
    </enrich>
 </then>
 <else>
    <log level="full"/>
 </else>

Спасибо

...