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請求:

#公衆號

關注公衆號 得到第一手文章/文檔更新推送。

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