Процессор NiFi ListenHTTP: как указать "разрешить пост"?
Просто начинаю с нифи. У обработчика http типа "ListenHTTP" прослушивания нет порта 9090 Необходимо разрешить http POST на http://localhost:9090/ end-point Мне не удалось найти настройки "приемлемых http-глаголов" в веб-интерфейсе для этого процессора, так что я думаю - это должно быть указано в каком-то файле конфигурации. Мой вопрос: какой это будет файл, и каков фактический синтаксис для его указания? Я видел некоторые шаблоны xml в сети, но я не уверен, где их разместить.
3 ответа
По умолчанию, если не указано альтернативное базовое имя, конечная точка процессора ListenHTTP доступна по адресу:
http://{hostname}:{port}/contentListener
Соответственно, ваш запрос должен быть для настроек по умолчанию:
curl --data "param1=value1¶m2=value2" localhost:9090/contentListener
Полная документация по процессору доступна на ListenHTTP или, если эта ссылка обрывается, на странице документации Nifi.
В качестве альтернативы, если вы хотите ограничить свою конечную точку конкретными глаголами, рассмотрите комбинацию HandleHttpRequest и HandleHttpResponse
Я считаю, что по умолчанию он принимает все глаголы. Я настроил ListenHttp на порт 9090 с пустым свойством "Базовый путь" и смог успешно использовать curl для POST-данных. Какие у вас проблемы?
Процессор ListenHTTP...
... запускает HTTP-сервер и прослушивает заданный базовый путь для преобразования входящих запросов в FlowFiles. URI по умолчанию для Сервиса будет http://{hostname}:{port}/contentListener. Поддерживаются только запросы HEAD и POST. GET, PUT и DELETE приведут к ошибке и коду статуса ответа HTTP 405.
Я смог POST для Nifi, используя PowerShell с Invoke-WebRequest
, но нужно указать -ContentType:"application/x-www-form-urlencoded"
, Этот тип контента устанавливается неявно в curl
Команда в ответе от @apiri.
Приведенный ниже пример работает, и в качестве дополнительного бонуса показано, как можно включить заголовок, который будет устанавливать атрибут в результирующем файле потока. Помните, что вам нужно установить необязательные заголовки HTTP для получения в качестве свойства атрибутов (Regex) в конфигурации процессора.
[PS] $HttpPost = @{
Uri = "http://{hostname}:{port}/contentListener"
Method = "POST"
ContentType = "application/x-www-form-urlencoded"
Headers = @{MyAttribute = "SomeValue"}
}
[PS] $Body = Get-Content <some_file> -Raw
[PS] Invoke-WebRequest @HttpPOST -Body:$Body
VERBOSE: POST http://{hostname}:{port}/contentListener with -1-byte payload
VERBOSE: received 0-byte response of content type text/plain
StatusCode : 200
StatusDescription : OK