NiFi ListenHTTP处理器:如何指定"允许发布"?

时间:2016-08-22 17:29:23

标签: apache-nifi

刚开始使用nifi。 有#" ListenHTTP"类型的http处理器听没有端口9090 需要在http://localhost:9090/端点上允许http POST 我无法找到任何可接受的http动词"这个处理器的Web UI中的设置,所以我猜 - 它需要在某种配置文件中指定。 我的问题是:那将是什么文件,以及指定这个的实际语法是什么? 我在网上看到了一些xml模板,但我不知道在哪里放一个。

3 个答案:

答案 0 :(得分:6)

默认情况下,如果未指定备用基本名称,则 ListenHTTP 处理器的端点位于:

http://{hostname}:{port}/contentListener

因此,对于默认设置,您的请求应为:

curl --data "param1=value1&param2=value2" localhost:9090/contentListener

有关处理器的完整文档,请访问ListenHTTP,或者如果该链接中断,请通过Nifi Documentation页面。

或者,如果您希望将端点限制为特定谓词,请考虑HandleHttpRequestHandleHttpResponse的组合

答案 1 :(得分:0)

我相信默认会接受所有动词。我在端口9090上配置了一个空的“基本路径”属性的ListenHttp,并且能够使用curl成功地将数据POST到它。你有什么问题?

答案 2 :(得分:0)

ListenHTTP 处理器......

  

...启动HTTP服务器并侦听给定的基本路径进行转换   传入的请求进入FlowFiles。服务的默认URI将   是http:// {hostname}:{port} / contentListener。只有HEAD和POST   请求受支持。 GET,PUT和DELETE将导致错误   和HTTP响应状态代码405。

     

- Nifi Documentation, ListenHTTP 1.6.0

我已经能够使用PowerShell Invoke-WebRequest发送到Nifi,但需要指定-ContentType:"application/x-www-form-urlencoded"。此内容类型隐式设置在@apiri的答案中的curl命令中。

以下示例有效,并且作为额外的奖励显示了如何包含将在结果流文件上设置属性的标头。请记住,您需要在处理器配置中将可选的 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