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請求:
#公衆號
關注公衆號 得到第一手文章/文檔更新推送。