1. 程式人生 > >004-spring cloud gateway-GatewayFilter Factories

004-spring cloud gateway-GatewayFilter Factories

ons 系列 iter 簡單 參數 ram move 1.5 .html

一、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