Apache NIFI HandleHttpRequest、HandleHttpResponse配置教程

HandleHttpRequest_HandleHttpResponse


编辑人:酷酷的诚 邮箱:[email protected]


#一、 HandleHttpRequest

#描述

HandleHttpRequest该处理器启动HTTP服务器并侦听HTTP请求。对于每个请求,创建一个流文件并传输到“success”。此处理器需要与HandleHttpResponse处理器一起使用,以便创建Web服务。

#属性配置

在下面的列表中,必需属性的名称以粗体显示。任何其他属性(不是粗体)都被认为是可选的,并且指出属性默认值(如果有默认值),以及属性是否支持表达式语言。

属性名称 默认值 可选值 描述
Listening Port 80   HTTP请求端口
Hostname     要绑定到的主机名。如果没有指定,将绑定到所有主机
SSL Context Service   Controller Service API:
RestrictedSSLContextService
Implementation:
StandardRestrictedSSLContextService
用于保护服务器的SSL上下文服务。如果指定,服务器将只接受HTTPS请求;否则,服务器将只接受HTTP请求
HTTP Context Map   Controller Service API:
HttpContextMap
Implementation:
[StandardHttpContextMap]
用于缓存HTTP请求信息的HTTP上下文映射控制器服务
Allowed Paths     指定传入URL请求中允许的有效HTTP路径的正则表达式。如果指定了这个值,并且HTTP请求的路径不匹配这个正则表达式,处理器将以404:NotFound响应
Default URL Character Set UTF-8   HTTP请求不提供URL参数时用于解码URL参数的字符集
Allow GET true ▪true
▪false
允许HTTP GET方法
Allow POST true ▪true
▪false
允许HTTP POST方法
Allow PUT true ▪true
▪false
允许HTTP PUT方法
Allow DELETE true ▪true
▪false
允许HTTP DELETE方法
Allow HEAD false ▪true
▪false
允许HTTP HEAD方法
Allow OPTIONS false ▪true
▪false
允许HTTP OPTIONS方法
Additional HTTP Methods     应该允许使用逗号分隔的非标准HTTP方法列表
Client Authentication No Authentication ▪No Authentication
▪Want Authentication
▪Need Authentication
 
Container Queue Size 50   Http请求容器的队列大小
Multipart Request Max Size 1 MB   Http请求容器的队列大小
Multipart Read Buffer Size 512 KB   将传入文件的内容写入磁盘的阈值大小。只适用于内容类型:multipart/form-data的请求。它用于防止拒绝服务类型的攻击,防止填满堆或磁盘空间。

#连接关系

名称 描述
sucess 接收到的所有内容都被路由到“success”关系

#读取属性

没有指定。

#写属性

名称 描述
http.context.identifier 允许HandleHttpRequest和HandleHttpResponse协调哪个流文件属于哪个HTTP请求/响应的标识符。
mime.type 数据的MIME类型(HTTP头“Content-Type”)
http.servlet.path 请求URL中被认为是Servlet路径的部分
http.context.path 请求URL中被认为是上下文路径的部分
http.method 用于请求的HTTP方法,如GET或POST
http.local.name 服务器的IP地址/主机名
http.server.port 服务器的监听端口
http.query.string 请求URL的查询字符串部分
http.remote.host 请求者的主机名
http.remote.addr 请求者的主机名:端口
http.remote.user 请求者的用户名
http.protocol 通信协议
http.request.uri 完整的请求URL
http.auth.type HTTP授权类型
http.principal.name 发出请求的经过身份验证的用户的名称
http.subject.dn 请求者的专有名称。除非将处理器配置为使用SSLContext服务,否则不会填充此值
http.issuer.dn 颁发主体证书的实体的专有名称。除非将处理器配置为使用SSLContext服务,否则不会填充此值
http.headers.XXX 请求中接收到的每个HTTP头都将添加为一个属性,前缀为“HTTP . Headers”。例如,如果请求包含一个名为“x-my-header”的HTTP头,那么该值将被添加到一个名为“HTTP . Header .x-my-header”的属性中。
http.headers.multipart.XXX 在mulipart请求中接收到的每个HTTP头都将作为一个属性添加,前缀为“HTTP .header .multipart”。例如,如果多部分请求包含一个名为“content- dispose”的HTTP头,那么该值将被添加到一个名为“HTTP . Header .multipart.content- dispose”的属性中。
http.multipart.size 对于内容类型为“multipart/form-data”的请求,将该部分的内容大小记录到该属性中
http.multipart.content.type 对于内容类型为“multipart/form-data”的请求,将该部分的内容类型记录到此属性中
http.multipart.name 对于内容类型为“multipart/form-data”的请求,将部件的名称记录到此属性中
http.multipart.filename 对于内容类型为“multipart/form-data”的请求,当该部分包含已上载的文件时,将文件的名称记录到此属性中
http.multipart.fragments.sequence.number 对于内容类型为“multipart/form-data”的请求,将part的索引记录到这个属性中。索引从1开始。
http.multipart.fragments.total.number 对于内容类型为“multipart/form-data”的请求,将所有部件的计数记录到此属性中。

#状态管理

此组件不存储状态。

#限制

此组件不受限制。

#输入要求

此组件不允许传入连接关系。

#系统资源方面的考虑

没有指定。

#二、HandleHttpResponse

该处理器向生成流文件的请求者发送HTTP响应。此处理器被设计为与HandleHttpRequest一起使用,以便创建web服务。

#属性配置

在下面的列表中,必需属性的名称以粗体显示。任何其他属性(不是粗体)都被认为是可选的,并且指出属性默认值(如果有默认值),以及属性是否支持表达式语言。

名称 默认值 可选值 描述
HTTP Status Code     响应HTTP请求时使用的HTTP状态代码。有关更多信息,请参见RFC 2616的第10节
支持表达式语言
HTTP Context Map   Controller Service API:
HttpContextMap
Implementation:
StandardHttpContextMap
用于缓存HTTP请求信息的HTTP上下文映射控制器服务

#动态属性

该处理器允许用户指定属性的名称和值。

属性名称 属性值 描述
用户自由定义的属性名称 用户自由定义的属性值 在该处理器生成的文件流上添加用户自定义的属性。如果使用表达式语言,则每批生成的流文件只执行一次计算 .

支持表达式语言:true(只使用变量注册表进行计算)

#连接关系

名称 描述
success 当响应成功发送给请求者后,流文件将被路由到此关系。
failure 如果处理器无法响应请求者,流文件将被路由到这个关系。例如,如果连接超时或NiFi在响应HTTP请求之前重新启动,就可能发生这种情况。

#读取属性

Name Description
http.context.identifier 此属性的值用于查找HTTP响应,以便可以将正确的消息发送回请求者。如果缺少此属性,则流文件将被路由到“failure”。
http.request.uri 客户端请求的URI的值。
http.remote.host 客户端的IP地址。
http.local.name 服务器的IP地址/主机名。
http.server.port 服务器的监听端口。
http.subject.dn SSL专有名称(如果有的话)。

#写属性

没有指定。

#状态管理

此组件不存储状态。

#限制

此组件不受限制。

#输入要求

此组件需要传入关系。

#系统资源方面的考虑

没有指定。

#应用场景

HandleHttpRequest与HandleHttpResponse一起使用,两个处理器之间可能存储其他的处理器来提供一些业务处理逻辑,以便提供一个完整的web服务。其中StandardHttpContextMap也是必须的,StandardHttpContextMap中存储的是每个请求的唯一标示。

#示例说明

1:简单POST请求

HandleHttpRequest,配置9999端口,Allowed paths中配置/latest(如果不配置,访问则直接IP:端口),如下:

HandleHttpResponse配置如下:

流程入下:

使用POSTMAN工具模拟执行post请求:

#公众号

关注公众号 得到第一手文章/文档更新推送。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章