В процессоре NiFi InvokeHTTP, куда вы пишете тело POST-запроса?

Перед тем, как опубликовать этот вопрос об Apache NiFi InvokeHTTP, я рассмотрел все остальные вопросы и ответы на них, но я все еще не уверен, какой поток у меня должен быть. Моя ситуация следующая:

1) Из Apache Kakfa я получаю необработанные метаданные.

2) Используя EvaluateJSONPath, я получаю нужный мне атрибут.

3) Используя RouteOnAttribute, я создал 3 маршрута на основе значения атрибута, полученного на шаге 2 выше.

4) Теперь, основываясь на значении атрибута, я хочу решить, следует ли мне использовать GET, POST или Delete.

5) Мой вопрос: где / как установить сообщение POST? ПОЛУЧИТЬ сообщение? Удалить тело сообщения?

6) Я могу установить URL-адрес в части конфигурации, предоставленной InvokeHTTP. Но тело сообщения, я не знаю, что это за свойство? или его в файле потока с помощью ReplaceText?

Я где-то читал, что перед тем, как вы перенаправляете свой HTTP-запрос Restful POST на InvokeHTTP, у вас должен быть другой процессор, перед которым изменяется содержимое файла потока.

Ссылка: Настройка HTTP-запроса POST от Nifi

Пожалуйста помоги. Спасибо. С уважением, Йешвант

все верно - содержимое потокового файла попадет в тело HTTP-запроса. Итак, вы можете использовать ReplaceText или другие процессоры изменения содержимого до InvokeHTTP, чтобы установить тело запроса

daggett 18.12.2018 13:16
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
7
1
9 557
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Для POST телом будет все, что есть в содержимом потокового файла.

GET и DELETE обычно не имеют тела, поскольку информация обычно предоставляется в параметрах URL или запроса.

Спасибо, Брайан. Можете ли вы сказать мне в конфигурации: 1) Каким должно быть значение свойства для типа содержимого поля для GET, POST, PUT и DELETE? Я установил $ {mime.type}? 2) Каким должно быть значение «Атрибуты для отправки»? Если вы читаете следующую ссылку, кто-то сказал, что значение «Атрибуты для отправки» должно быть - content-type = application / json community.hortonworks.com/questions/55615/…

Yeshwant KAKAD 19.12.2018 08:22

Вам необходимо выяснить, какой веб-сервис, с которым вы взаимодействуете, принимает эти операции. Для запроса, у которого нет тела, такого как GET или DELETE, тип содержимого не имеет особого значения. Для POST или PUT, если веб-служба принимает JSON, тогда это должно быть application / json, если у вас есть json в теле файла потока.

Bryan Bende 19.12.2018 15:39

Я бы представил, что вы не используете NiFi, а затем подумал бы о том, что бы вы отправили для content-type, если бы вы использовали Curl, Postman или какой-либо другой инструмент для совершения звонков. Какие бы значения вы не использовали в другом инструменте, они будут такими же, как у NiFi.

Bryan Bende 19.12.2018 15:39
Ответ принят как подходящий

В дополнение к тому, что объяснил Брайан, POST будет использовать содержимое FlowFile в качестве тела сообщения, поэтому, если у вас есть другие данные, которые вы хотите стереть / преобразовать во что-то, а затем отправить как тело сообщения, вы можете использовать следующие процессоры:

  • ExtractText для чтения данных из существующего содержимого FlowFile
  • ReplaceText, чтобы стереть существующее содержимое FlowFile и заменить его другим

Чтобы установить заголовки для вызовов REST, InvokeHTTP имеет свойство Attributes to Send свойство, которое принимает регулярное выражение, которое будет сканироваться по атрибутам входящих FlowFiles, и какие бы атрибуты ни совпадали, берутся и отправляются как заголовок HTTP.

Чтобы добавить новый атрибут в существующий FlowFile, вы можете использовать UpdateAttribute

Другие вопросы по теме