HandleHttpRequest_HandleHttpResponse


编辑人(全网同名):酷酷的诚 邮箱:zhangchengk@foxmail.com


一、 HandleHttpRequest

描述

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

属性配置

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

属性名称默认值可选值描述
Listening Port80HTTP请求端口
Hostname要绑定到的主机名。如果没有指定,将绑定到所有主机
SSL Context ServiceController Service API:
RestrictedSSLContextService
Implementation:
StandardRestrictedSSLContextService
用于保护服务器的SSL上下文服务。如果指定,服务器将只接受HTTPS请求;否则,服务器将只接受HTTP请求
HTTP Context MapController Service API:
HttpContextMap
Implementation:
[StandardHttpContextMap]
用于缓存HTTP请求信息的HTTP上下文映射控制器服务
Allowed Paths指定传入URL请求中允许的有效HTTP路径的正则表达式。如果指定了这个值,并且HTTP请求的路径不匹配这个正则表达式,处理器将以404:NotFound响应
Default URL Character SetUTF-8HTTP请求不提供URL参数时用于解码URL参数的字符集
Allow GETtrue▪true
▪false
允许HTTP GET方法
Allow POSTtrue▪true
▪false
允许HTTP POST方法
Allow PUTtrue▪true
▪false
允许HTTP PUT方法
Allow DELETEtrue▪true
▪false
允许HTTP DELETE方法
Allow HEADfalse▪true
▪false
允许HTTP HEAD方法
Allow OPTIONSfalse▪true
▪false
允许HTTP OPTIONS方法
Additional HTTP Methods应该允许使用逗号分隔的非标准HTTP方法列表
Client AuthenticationNo Authentication▪No Authentication
▪Want Authentication
▪Need Authentication
Container Queue Size50Http请求容器的队列大小
Multipart Request Max Size1 MBHttp请求容器的队列大小
Multipart Read Buffer Size512 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.typeHTTP授权类型
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 MapController Service API:
HttpContextMap
Implementation:
StandardHttpContextMap
用于缓存HTTP请求信息的HTTP上下文映射控制器服务

动态属性

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

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

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

连接关系

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

读取属性

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

写属性

没有指定。

状态管理

此组件不存储状态。

限制

此组件不受限制。

输入要求

此组件需要传入关系。

系统资源方面的考虑

没有指定。

应用场景

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

示例说明

1:简单POST请求

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

HandleHttpResponse配置如下:

流程入下:

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

Last Updated:
Contributors: zhangcheng