Parameter類過濾器
AddRequestHeader
增加請求頭資訊,并傳遞到下遊;
- AddRequestHeader=name, value
spring:
cloud:
gateway:
routes:
- id: add_request_header_route
uri: http://example.org
filters:
- AddRequestHeader=name, value
RemoveResponseHeader
傳遞下遊前,移除請求頭屬性;
- RemoveResponseHeader=name
spring:
cloud:
gateway:
routes:
- id: removeresponseheader_route
uri: http://example.org
filters:
- RemoveResponseHeader=name
AddResponseHeader
增加請求頭資訊,并傳遞到下遊;
- AddResponseHeader=name, value
spring:
cloud:
gateway:
routes:
- id: add_request_header_route
uri: http://example.org
filters:
- AddResponseHeader=name, value
RemoveResponseHeader
傳遞下遊前,移除頭資訊中某個屬性;
- RemoveResponseHeader=name
spring:
cloud:
gateway:
routes:
- id: removeresponseheader_route
uri: http://example.org
filters:
- RemoveResponseHeader=name
SetRequestHeader
當請求經過網關轉發時,該過濾器将會用給定的名字替換對應的頭部資訊;
- SetRequestHeader=name, value
spring:
cloud:
gateway:
routes:
- id: setresponseheader_route
uri: http://example.org
filters:
- SetRequestHeader=name, value
SetResponseHeader
當請求經過網關轉發時,該過濾器将會用給定的名字替換對應的頭部資訊;
- SetResponseHeader=name, value
spring:
cloud:
gateway:
routes:
- id: setresponseheader_route
uri: http://example.org
filters:
- SetResponseHeader=name, value
PreserveHostHeader
PreserveHostHeader GatewayFilter Factory沒有參數。此過濾器設定路由過濾器将檢查的請求屬性,以确定是否應發送原始主機頭,而不是http用戶端确定的主機頭。
- PreserveHostHeader
spring:
cloud:
gateway:
routes:
- id: preserve_host_route
uri: http://example.org
filters:
- PreserveHostHeader
RequestHeaderToRequestUri
當請求 http://example.org 時,會根據X-New-Url來進行新的url路由;
- RequestHeaderToRequestUri=X-New-Url
spring:
cloud:
gateway:
enabled: true
discovery:
locator:
enabled: true
routes:
- id: request_header_to_request_uri_route
uri: http://example.org
filters:
- RequestHeaderToRequestUri=X-New-Url
AddRequestParameter
修改請求内容中的某個屬性值;name,value
spring:
cloud:
gateway:
routes:
- id: add_request_parameter_route
uri: http://example.org
filters:
- AddRequestParameter=name, value
Path類過濾器
PrefixPath
将所有請求路徑前加上路徑;value
- PrefixPath=value
spring:
cloud:
gateway:
routes:
- id: prefixpath_route
uri: http://example.org
filters:
- PrefixPath=value
RewritePath
利用路徑正規表達式靈活替換請求路徑
spring:
cloud:
gateway:
routes:
#插件請求轉發
#(?<segment>/?.*):比對 /任意字元,此處/出現0次或1次。将比對到的結果捕獲到名稱為segment的組中
#$\{segment}:将 segment所捕獲到的文本置換到此處,注意,\的出現是由于避免yaml認為這是一個變量,在gateway進行解析時,會被替換為${segment}
- id: "ms-api-gateway"
uri: "lb://ms-api-gateway"
predicates:
- Path=/isv/mini/common/**
filters:
- RewritePath=/isv(?<segment>/?.*), /isv/ms/app$\{segment}
SetPath
SetPath GatewayFilter Factory采用路徑模闆參數。它提供了一種通過允許模闆化路徑段來操作請求路徑的簡單方法。這使用了Spring Framework中的uri模闆。允許多個比對的段。
- SetPath=/{segment}
spring:
cloud:
gateway:
routes:
- id: setpath_route
uri: http://example.org
predicates:
- Path=/foo/{segment}
filters:
- SetPath=/{segment}
StripPrefix
StripPrefix網關過濾器工廠采用一個參數StripPrefix。StripPrefix參數表示在将請求發送到下遊之前從請求中剝離的路徑個數。
- StripPrefix
spring:
cloud:
gateway:
routes:
- id: nameRoot
uri: http://nameservice
predicates:
- Path=/name/**
filters:
- StripPrefix=1
Status類過濾器
SetStatus
當某個路徑下所有響應都是設定的這個狀态碼;狀态碼可以是代碼或者數字,org.springframework.http.HttpStatus
- SetStatus
spring:
cloud:
gateway:
routes:
- id: setstatusstring_route
uri: http://example.org
filters:
- SetStatus=BAD_REQUEST
- id: setstatusint_route
uri: http://example.org
filters:
- SetStatus=401
Session類過濾器
SaveSession
SaveSession GatewayFilter Factory在轉發下遊調用之前強制執行WebSession :: save操作。當使用Spring Session與懶加載資料存儲之類的東西時,這是特别有用的,并且需要確定在轉發調用之前已儲存會話狀态。
spring:
cloud:
gateway:
routes:
- id: save_session
uri: http://example.org
predicates:
- Path=/foo/**
filters:
- SaveSession
如果要将Spring Security與Spring Session內建,并且希望確定将安全性詳細資訊轉發到遠端程序,則這很關鍵。
Redirect類過濾器
RedirectTo
RedirectTo GatewayFilter Factory采用status和url參數。狀态應該是300系列重定向http代碼,例如301. url應該是有效的URL。這将是Location标頭的值。
spring:
cloud:
gateway:
routes:
- id: prefixpath_route
uri: http://example.org
filters:
- RedirectTo=302, http://acme.org
将發送帶有Location:http://acme.org 的請求頭屬性且狀态302的請求,以執行重定向。
Retry類過濾器
RetryGatewayFilterFactory
該過濾器有三個參數:
retries: 重試次數;
statuses: 應該重試的HTTP狀态代碼,使用org.springframework.http.HttpStatus表示;
methods: 應該重試的HTTP方法,使用org.springframework.http.HttpMethod表示;
series: 要重試的一系列狀态代碼,使用org.springframework.http.HttpStatus.Series表示;
多個參數已args開頭:
spring:
cloud:
gateway:
routes:
- id: retry_test
uri: http://localhost:8080/flakey
predicates:
- Host=*.retry.com
filters:
- name: Retry
args:
retries: 3
statuses: BAD_GATEWAY
關注公衆号 soft張三豐