Как извлечь значение QueryString с помощью процессора / языка NiFi? - PullRequest
0 голосов
/ 07 мая 2019

Мне интересно, как извлечь значение строки запроса из входящего URL-адреса, используя NiFi. Первоначально я начал с реализации UpdateAttribute:

enter image description here

Например, я хотел бы из входящего URL http://smth.net/hello?val=23 иметь значение 23 извлечено.

Далее, я ожидаю, что смогу использовать это извлеченное значение, ссылаясь на него следующим образом: (Процессор InvokeHttp) http://some.net/getValues?id=${q}

Любые советы приветствуются!

Отредактированный вопрос:

Проверка файла потока после извлечения строки запроса выглядит следующим образом:

enter image description here

enter image description here

Ответы [ 2 ]

2 голосов
/ 07 мая 2019

вы можете использовать UpdateAttribute с replaceAll (регулярное выражение):

${url:replaceAll('.*[\\?\\&]val=([^&]*).*','$1')}

возможно, регулярное выражение может быть оптимизировано ...

0 голосов
/ 09 мая 2019

На самом деле самый простой способ получить значение строки запроса - использовать выражение NiFi, например: $ {http.query.param. [KeyNameOfQueryString]} .. Итак, если URL-адрес запроса 127.0.0.1/hello?val = 23 тогда выражение NiFi будет $ {http.query.param.val} UpdateAttribute processor's Configuration

Другой способ - использовать регулярные выражения, как предположил Даггетт, но в моем случае мне пришлось сделать следующее:

${http.query.string:replaceAll('val=(\d+).*', '$1')}

Обратите внимание на http.query.string вместо URL.

...