天天看點

【網關】spring cloud gateway内置過濾器

【網關】spring cloud gateway内置過濾器
【網關】spring cloud gateway内置過濾器

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張三豐 

繼續閱讀