HandleHttpRequest

文档中心 › 组件索引 › HandleHttpRequest

HandleHttpRequest Processor

类型全限定名:cn.org.acal.lynxus.processors.standard.HandleHttpRequest

所属 Bundle:cn.org.acal.lynxus:lynxus-standard-nar:2.11.8

描述

启动 HTTP 服务器并监听 HTTP 请求。对于每个请求,创建一个 FlowFile 并将其传输到 success 关系。

标签

httphttpsrequestlisteningressweb service

属性

下表中,加粗的属性为必填项;其余为可选项。表格同时标注默认值、是否支持表达式语言,以及是否为敏感属性(值会被加密)。

名称默认值可选值描述
Listening Port80侦听传入 HTTP 请求的端口
支持表达式语言:是(仅使用环境/系统变量求值)
Hostname要绑定的主机名。 如果不指定,将绑定到所有主机
SSL Context Service控制器服务 API:
SSLContextProvider
cn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8
用于保护服务器的 SSL 上下文服务。如果指定,服务器将仅接受 HTTPS 请求;否则,服务器将仅接受 HTTP 请求
HTTP ProtocolsHTTP_1_1
  • http/1.1 — HTTP/1.1
  • h2 http/1.1 — 根据请求的协议协商 HTTP/2 和 HTTP/1.1
  • h2 — HTTP/2
支持使用 TLS 进行应用层协议协商的 HTTP 协议
HTTP Context Map控制器服务 API:
HttpContextMap
cn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8
用于缓存 HTTP 请求信息的 HTTP 上下文映射Controller Service
Allowed Paths指定传入 URL 请求中允许的 HTTP 路径的正则表达式。如果指定了此值且 HTTP 请求的路径不匹配此正则表达式,处理器将响应 404: NotFound。
Default URL Character SetUTF-8如果 HTTP 请求未提供 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 方法
Maximum Threads200嵌入式 HTTP 服务器用于处理请求的最大线程数。
Request Header Maximum Size8 KB发送到该处理器的请求中 HTTP 标头支持的最大大小
Additional HTTP Methods应允许的非标准 HTTP 方法的逗号分隔列表
Client AuthenticationNo Authentication
  • 无认证 — 处理器不会对客户端进行认证。任何人都可以匿名与此处理器通信
  • 需要认证(可选) — 处理器将尝试验证客户端,但如果无法验证则允许客户端匿名通信
  • 需要认证(必需) — 处理器将拒绝任何未提供由 TrustStore 信任的证书的客户端通信,该 TrustStore 在 SSL Context Service 中指定
指定处理器是否应对客户端进行身份验证。如果未指定 <SSL Context Service> 属性或提供的 SSL 上下文仅使用密钥库而不使用信任库,则忽略此值。
Container Queue Size50Http 请求容器队列的大小
Multipart Request Max Size1 MB请求的最大大小。仅适用于 Content-Type 为 multipart/form-data 的请求,用于防止拒绝服务类型的攻击,防止填满堆内存或磁盘空间。
多部分读取缓冲区大小512 KB传入文件内容写入磁盘的阈值大小。仅适用于 Content-Type 为 multipart/form-data 的请求。用于防止拒绝服务类型攻击,防止堆或磁盘空间被填满。
Parameters to Attributes要作为属性输出的 HTTP 参数或表单数据的逗号分隔列表

关系 (Relationships)

名称描述自动终止
success接收到的所有内容都会路由到“成功”关系否

写入的 FlowFile 属性

名称描述
http.context.identifier允许 HandleHttpRequest 和 HandleHttpResponse 协调哪个 FlowFile 属于哪个 HTTP 请求的标识符
mime.type根据 HTTP 头 'Content-Type' 确定的数据 MIME 类型
http.servlet.path请求 URL 中被视为 Servlet Path 的部分
http.context.path请求 URL 中被视为 Context Path 的部分
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.query.param.XXX请求中的每个查询参数将作为属性添加,前缀为 'http.query.param.'
http.param.XXX请求中由"参数到属性列表"配置的表单参数将作为属性添加,前缀为"http.param."。不建议放入大尺寸的表单参数。
http.subject.dn请求者的专有名称。除非处理器配置为使用 SSLContext Service,否则不会填充此值
http.issuer.dn签发主体证书的实体的专有名称。除非处理器配置为使用 S
http.certificate.sans.N.name来自双向 TLS 身份验证的 X.509 客户端证书主题备用名称值。属性名称具有从零开始的索引,根据客户端证书的内容排序
http.certificate.sans.N.nameType来自双向 TLS 身份验证的 X.509 客户端证书主题备用名称类型。属性名称具有从零开始的索引,根据客户端证书的内容排序。属性值是 RFC 3280 第 4.1.2.7 节中的通用名称之一
http.headers.XXX请求中接收的每个 HTTP 头将作为属性添加,前缀为"http.headers."。例如,如果请求包含名为"x-my-header"的 HTTP 头,则值将添加到名为"http.headers.x-my-header"的属性中
http.headers.multipart.XXX多部分请求中接收的每个 HTTP 头将作为属性添加,前缀为"http.headers.multipart."。例如,如果多部分请求包含名为"content-disposition"的 HTTP 头,则值将添加到名为"http.headers.multipart.content-disposition"的属性中
http.multipart.size对于 Content-Type 为 'multipart/form-data' 的请求,部件的内容大小记录到此属性中
http.multipart.content.type对于 Content-Type 为 'multipart/form-data' 的请求,部件的内容类型记录到此属性中
http.multipart.name对于 Content-Type 为 'multipart/form-data' 的请求,部件的名称记录到此属性中
http.multipart.filename对于 Content-Type 为 "multipart/form-data" 的请求,当部件包含上传文件时,文件名记录到此属性中。文件临时存储在 "java.io.File" Java 文档中指定的默认临时文件目录中
http.multipart.fragments.sequence.number对于 Content-Type 为 "multipart/form-data" 的请求,部件的索引记录到此属性中。索引从 1 开始。
http.multipart.fragments.total.number对于 Content-Type 为 'multipart/form-data' 的请求,所有部件的计数记录到此属性中。

状态管理

该组件不存储状态。

受限 (Restricted)

该组件不受限。

输入要求

该组件不允许有传入连接。

另请参阅

详细说明

HandleHttpRequest

使用说明

将此 Processor 与 HandleHttpResponse Processor 配合使用,可以利用 Lynxus 以可视化方式构建一个 Web 服务器, 实现现有 Processor 所能提供的任何功能。例如,可以通过构建如下流程,为 SFTP 服务器搭建一个基于 Web 的前端:

HandleHttpRequest -> PutSFTP -> HandleHttpResponse

HandleHttpRequest Processor 提供了若干属性,用于配置支持哪些 HTTP 方法、支持哪些路径以及 SSL 配置。

对于处理包含多个分片(part)、Content-Type 为 multipart/form-data 的请求,需要额外注意。 每个分片(part)都会生成一个独立的 FlowFile,并为这些 FlowFile 写入以下特殊 Attribute:

  • http.context.identifier
  • http.multipart.fragments.sequence.number
  • http.multipart.fragments.total.number

这些 Attribute 可用于为 HandleHttpResponse Processor 实现一种门控机制: 等待序号为 http.multipart.fragments.sequence.number 的 FlowFile 处理完成, 直到同一 http.context.identifier(每个请求唯一)下的全部 http.multipart.fragments.total.number 个 FlowFile 都处理完毕。