beetlex閘道器之聚合和url請求過慮
在這裡主要介紹beetlex應用閘道器的兩個外掛,分別是聚合和url請求過慮.通過聚合外掛可以把整合多個請求的資料來應答請求端,而Url請求過慮同可以拒絕一些有非常關鍵字的請求。
請求聚合
在閘道器服務中請求聚合是允許把多個請求打包成一個響應給請求方,這樣不僅可以節省請求方的請求數量,還可以根據需求的情況整合不同業務資料響應請求。BeetleX.Bumblebee
雖然並沒有內建這一功能,但可以通過擴充套件的形式來支援請求聚合,接下來就介紹一下元件的聚合外掛使用。
引用外掛
可以通過Nuget
安裝最新版本BeetleX.Bumblebee.Aggregation
,安裝後通過閘道器載入外掛(需要更新BeetleX.FastHttpApi 到1.7.7.8)
gateway.LoadPlugin(typeof(Bumblebee.Aggregation.Aggregate).Assembly);
註冊了外掛後,可以在管理的外掛頁面看到相關外掛
外掛預設是不啟用,啟用前需要配置相關的Url
聚合。
應用需求
現在有兩個請求,一個是獲取僱員資訊,另一個則獲取僱員相關訂單,情況如下:
http://192.168.2.25:9090/employee/2
http://192.168.2.26:9090/orders/2
接下來希望訪問以下地址來整合兩個介面的資料輸出
http://host/GetEmployeeOrders?id=2
配置
接下來根據上面的情況來制定一個聚合配置,點選外掛進行配置頁面
配置資訊是一個數組結構,可以根據需要來定義多個聚合請求路徑。Url
表示聚合的請求路徑,OutputError
用於描述如果某個請求有錯誤是否把錯誤輸出,Actions
相應聚合的多項請求地址。針對剛提到的需要配置如下:
[ { "Url": "/GetEmployeeOrders", "OutputError": true, "Actions": [ { "Name": "Employee", "Host": "http://192.168.2.25:9090", "Url": "/employee/{id}" }, { "Name": "Orders", "Host": "http://192.168.2.26:9090", "Url": "/orders/{id}" } ] } ]
配置支援通過{xxx}
的方式把請求的引數傳遞到聚合請求中。接下來嘗試訪問一下/GetEmployeeOrders
(注意要先啟用外掛)
由於沒有帶上引數所以訪問返回了404
,接下來帶上正式的引數
當提供正確的引數後就把請求資料聚合到正常結果輸出
不輸出錯誤
有時候為了方便處理不想輸出錯誤,當聚合Url
有錯誤只響應null
。這樣只需要把OutputError
調整一下即可
[ { "Url": "/GetEmployeeOrders", "OutputError": false, "Actions": [ { "Name": "Employee", "Host": "http://192.168.2.25:9090", "Url": "/employee/{id}" }, { "Name": "Orders", "Host": "http://192.168.2.26:9090", "Url": "/orders/{id}" } ] } ]
通過以上介紹元件制定聚合處理是不是非常方便呢,如果想更多瞭解元件可以訪問
url請求過慮
一旦網站部署到網際網路上,就會受到一些非法的請求,而這些請求的Url
都是一些特定的路徑或帶上一些無關請求的字元用於探測一些服務存在的問題;還有這些請求會落到日誌中,導致日誌臃腫和轉發到後臺服務帶能處理上的損耗。為了應對攔截這些請求不流入到後臺節點服務,元件提供了一個外掛來解決這一問題。
引用元件
可以通過Nuget
引用BeetleX.Bumblebee.InvalidUrlFilter
,引用之後通過元件載入這個外掛的程式集即可:
Gateway.LoadPlugin(typeof(Bumblebee.InvalidUrlFilter.RequestUrlFilter).Assembly);
引用成功後,通過管理外掛提供的列表中可以看到
這個外掛預設是關閉,如果有需要開啟即可。
配置外掛
外掛預設是不過慮任何請求的Url
,你需要配置一些非常的關鍵字片語,只要請求的Url
存在這些片語即可被元件拒絕。配置可以點選外掛進行配置頁面.
可以根據需要來新增一些非常法的關鍵字,新增完成後儲存即可。如果請求的Url
有相關內容即會響應閘道器錯誤
只需發簡單地配置,就可以過慮一些非法的Url請求
&n