004-spring cloud gateway-GatewayFilter Factories
一、GatewayFilter Factories
路由過濾器允許以某種方式修改傳入的HTTP請求或傳出的HTTP響應。路徑過濾器的範圍限定為特定路徑。 Spring Cloud Gateway包含許多內置的GatewayFilter工廠。
1.1、請求頭
spring: cloud: gateway: routes: - id: add_request_header_route uri: http://example.org filters: - AddRequestHeader=X-Request-Foo, Bar
名稱和值,這將為所有匹配請求的下遊請求標頭添加X-Request-Foo:Bar標頭。
移除請求頭
filters:
- RemoveRequestHeader=X-Request-Foo
1.2、請求參數
filters:
- AddRequestParameter=foo, bar
這會將foo = bar添加到下遊請求的所有匹配請求的查詢字符串中。
1.3、添加響應頭
filters:
- AddResponseHeader=X-Response-Foo, Bar
這會將X-Response-Foo:Bar標頭添加到所有匹配請求的下遊響應標頭中。
移除響應頭
filters:
- RemoveResponseHeader=X-Response-Foo
設置響應頭
filters:
- SetResponseHeader=X-Response-Foo, Bar
此GatewayFilter將替換具有給定名稱的所有標頭,而不是添加。
1.4、路徑前綴
filters:
- PrefixPath=/mypath
這將使/ mypath前綴為所有匹配請求的路徑。所以對/ hello的請求會被發送到/ mypath / hello。
1.5、原始主機頭
沒有參數,此過濾器設置路由過濾器將檢查的請求屬性,以確定是否應發送原始主機頭,而不是http客戶端確定的主機頭。
filters:
- PreserveHostHeader
1.6、重定向
filters: - RedirectTo=302, http://acme.org
這將發送帶有Location:http://acme.org標頭的狀態302以執行重定向。
1.7、重寫路徑
predicates: - Path=/foo/** filters: - RewritePath=/foo/(?<segment>.*), /$\{segment}
對於/ foo / bar的請求路徑,這將在發出下遊請求之前將路徑設置為/ bar。註意由於YAML規範,$ \替換為$。
1.8、保存Session
predicates: - Path=/foo/** filters: - SaveSession
1.9、路徑模板
SetPath GatewayFilter Factory采用路徑模板參數。它提供了一種通過允許模板化路徑段來操作請求路徑的簡單方法。
predicates: - Path=/foo/{segment} filters: - SetPath=/{segment}
對於/ foo / bar的請求路徑,這將在發出下遊請求之前將路徑設置為/ bar。
1.10、設置響應狀態
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
1.11、請求參數剝離
parts參數指示在將請求發送到下遊之前從請求中剝離的路徑中的部分數。
predicates: - Path=/name/** filters: - StripPrefix=2
當通過網關向/ name / bar / foo發出請求時,對nameservice的請求將類似於http:// nameservice / foo。
1.12、重試
retries:重試:應該嘗試的重試次數
statuses:狀態:應該重試的HTTP狀態代碼,使用org.springframework.http.HttpStatus表示
methods:方法:應該重試的HTTP方法,使用org.springframework.http.HttpMethod表示
series:系列:要重試的狀態代碼系列,使用org.springframework.http.HttpStatus.Series表示
routes: - id: retry_test uri: http://localhost:8080/flakey predicates: - Host=*.retry.com filters: - name: Retry args: retries: 3 statuses: BAD_GATEWAY
1.13、Hystrix GatewayFilter Factory
https://cloud.spring.io/spring-cloud-static/Finchley.SR1/single/spring-cloud.html#_hystrix_gatewayfilter_factory
1.14、請求限速
RequestRateLimiter GatewayFilter Factory
1.15、安全頭
SecureHeaders GatewayFilter Factory
004-spring cloud gateway-GatewayFilter Factories