Как преобразовать запрос Почтальона в запрос NiFi? - PullRequest
0 голосов
/ 17 октября 2019

Я не против, если вы используете пример из другого API, который не является Adobe Analytics ». Мне просто нужно знать шаблон, которому я должен следовать, чтобы успешно преобразовать запрос Postman в запрос NiFi.

После успешного создания запросов на получение отчетов из Adobe Analytics через Postman, явозникли трудности с переносом этих запросов Почтальона на NiFi. Мне не удалось найти конкретные варианты использования, которые подробно объясняют, как выполнять эту задачу шаг за шагом.

Я пытаюсь создать бэкэнд поверх NiFi для обработки нескольких экстрактов данных. от Adobe Analytics эффективным и надежным способом. Это вместо того, чтобы создавать все необходимые сценарии самостоятельно. Тем не менее, имеется больше документации по REST API и делам Postman, чем по REST API и делам NiFi.

На скриншоте ниже мы можем видеть, как выглядит запрос Postman. Требуется 3 заголовка и 1 временный заголовок, который включает в себя значение авторизации (токен на предъявителя). Этот временный заголовок генерируется автоматически после заполнения формы авторизации OAuth 2.0 на вкладке Авторизация, как показано здесь .

Postman request

Тогда у нас есть тело запроса. Этот текст в формате json создается автоматически при отладке рабочих областей Adobe Analytics, как показано здесь .

Body of request

Я хотел бы знать,следуя пошаговым инструкциям со скриншотами, если это возможно:

  • Какой процессор (ы) я должен использовать в NiFi для получения ответа, аналогичного тому, который я получил в Postman?
  • Какие свойства я должен добавить / удалить из процессора, чтобы это работало?
  • Как мне назвать эти свойства?
  • Есть ли свойство по умолчанию, значение / имя которого я должен изменить?

Как видите, вопрос в основном относится кдля настройки свойств в NiFi, а также выбора процессора. Я уже пытался настроить некоторые процессоры, но мне кажется, что я не могу правильно настроить свойства, или, возможно, я выбираю неправильные процессоры.

Я использую NiFi v1.6.0 и Postman v7.8.0

Скорее всего, это простая задача для пользователей, уже знакомых с запросами NiFi и API, но она оказалась сложной для меня. Надеемся, что это поможет другим пользователям, которые хотят построить более надежные конвейеры, используя NiFi вместо того, чтобы делать это вручную.

Спасибо.

1 Ответ

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

Для репликации запроса REST API, работающего в Postman, требуется всего 3 процессора NiFi. В этом решении мы используем запрос, который содержит вложенный запрос JSON. Преимущество этого простого подхода состоит в том, что он уменьшает объем конфигурации, необходимый для получения успешного ответа от API. То есть, даже если вы используете сложный запрос JSON. В этом случае тело запроса JSON передается через процессор GenerateFlowFile, без необходимости какого-либо другого процессора для анализа / форматирования запроса.

Шаг # 1. Создайте процессор с именем GenerateFlowFile. Единственное свойство, которое вам придется изменить, - это Пользовательский текст . Вставьте туда весь свой JSON-запрос, как это было в Postman. В этом случае я использую тот же JSON, который показан в вопросе выше. Рекомендуется настроить Продолжительность выхода до 10 секунд или более.

Generate FlowFile

Шаг № 2. Создайте процессор с именем InvokeHTTP. Затем измените 6 свойств, показанных на скриншотах ниже. Используйте те же данные авторизации, которые вы использовали в Почтальоне. Обязательно скопируйте токен на предъявителя из Почтальона после его проверки. Кроме того, не забудьте также настроить HTTP Method, Remote URL и Content-Type.

InvokeHttp1 InvokeHttp2

Шаг № 3. Наконец, добавьте пару LogAttribute процессоровхранить вывод InvokeHTTP. Один из этих LogAttribute процессоров должен хранить успешные ответы. Другой можно использовать для Отказ, Оригинал, Повторить и Без повторов . Или вы можете создать LogAttribute для каждого из этих выходов.

Шаг № 4. Теперь подключите процессоры и Запустите ваш поток данных! Вы должны начать видеть, как данные заполняют Successful LogAttribute. Затем вы можете использовать параметр «Провенанс данных», чтобы просмотреть входящие данные и подтвердить, что это точно такой же результат, который вы ранее получили от Почтальона.

General data flow

Примечание: Это простое и понятное решение "для начинающих" для репликации запроса API Postman с использованием вложенного статического JSON. В StackOverflow есть больше решений для более сложных случаев, таких как динамический JSON. Вот список некоторых других сообщений:

...