当前位置:网站首页>[micro service SCG] 33 usages of filters

[micro service SCG] 33 usages of filters

2022-07-05 02:35:00 Bulst

Add request header / Request parameters / Response head

spring:
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true
          lower-case-service-id: true
      routes:
        - id: ossa-service-producer
          uri: lb://ossa-service-producer
          predicates:
            - Path=/gw/producer/**
            - After=2022-03-03T15:50:30.337+08:00[Asia/Shanghai]
            - Before=2024-03-03T15:50:30.337+08:00[Asia/Shanghai]
          filters:
            - StripPrefix=1
            #  Add request header 、 Request parameters 
            - AddRequestHeader=origin-header,producer-header
            - AddRequestParameter= origin-param,producer-param
            - AddResponseHeader=rep-header,rep-header

New news header Request header

spring:
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true
          lower-case-service-id: true
      routes:
        - id: ossa-service-producer
          uri: lb://ossa-service-producer
          predicates:
            - Path=/gw/producer/{
    id}
            - After=2022-03-03T15:50:30.337+08:00[Asia/Shanghai]
            - Before=2024-03-03T15:50:30.337+08:00[Asia/Shanghai]
          filters:
            - StripPrefix=1
            #  Add request header 、 Request parameters 
            - AddRequestHeader=origin-header,producer-header-{
    id}

Set request header 、 Filter configuration , Modify or remove the request header

filters:
   - StripPrefix=1
   #  Add request header 、 Request parameters 
   - AddRequestHeader=origin-header,producer-header-{
    id}
   - AddRequestParameter=origin-param,producer-param
   - AddResponseHeader=rep-header,rep-header
   #  Set request header , If not, add , It was modified 
   - SetRequestHeader=X-Request-id,value
   #  Remove request header 、 Request parameters 
   - RemoveRequestHeader=X-Request-id
   - RemoveRequestParameter=X-Request
   - RemoveRequestParameter=X-Request-author
   - AddResponseHeader=req-param,req-param
   #  First from header take from-Header, If so, assign to to-Header, If not from-Header No effect 
   - MapRequestHeader=from-Header,to-Header

PreserveHostHeader

Default on , stay gateway Forward the original request before forwarding the request host Put it on your head , Forward to the destination service .

spring:
  cloud:
    gateway:
      routes:
      - id: preserve_host_route
        uri: https://example.org
        filters:
        - PreserveHostHeader

rewrite response Encrypted password

# for example : /42?user=ford&passwd=omg!what&flag=true After the following configuration, replace with /42?user=ford&passwd=***&flag=true

spring:
  cloud:
    gateway:
      routes:
      - id: rewriteresponseheader_route
        uri: https://example.org
        filters:
        - RewriteResponseHeader=X-Response-Red, , password=[^&]+, password=***

response duplicate removal

  1. RETAIN_FIRST Keep the first (default)

  2. RETAIN_LAST Keep the last one

  3. RETAIN_FIRST RETAIN_UNIQUE Keep unique

spring:
  cloud:
    gateway:
      routes:
      - id: dedupe_response_header_route
        uri: https://example.org
        filters:
        - DedupeResponseHeader=Access-Control-Allow-Credentials Access-Control-Allow-Origin

Path prefixed

request / It's actually /mypath

spring:
  cloud:
    gateway:
      routes:
      - id: prefixpath_route
        uri: https://example.org
        filters:
        - PrefixPath=/mypath

To configure 30 A few Jump to the specified address

#300 Multiple Multiple choice , The requested resource may include multiple locations , Accordingly, a list of resource characteristics and addresses can be returned for user terminal selection

#301 Moved Permanently A permanent move , The new location of the requested resource has been permanently moved , The returned information will contain URI, The browser will automatically direct to the new address , Future requests should use new URI Instead of

#302 Found Temporary movement , And 301 similar , Resources are temporarily moved , The client should continue to use the original URI

#303 See Other View other addresses , And 301 similar . Use GET and POST Request to view

#304 not changed , The requested resource has not been modified , When the server returns to this state , No resources will be returned

#305 Use proxy Using agents , The requested resource must be through a proxy

#306 Unused Abandoned HTTP Status code

#307 Temporary Redirect Temporary redirection , And 302 similar , Use GET request redirections

- RedirectTo=302,http://www.baidu.com 

- RedirectTo=301,http://www.taobao.com

Modify the status code

Modify the status code , Sure org.springframework.http.HttpStatus enumeration , You can also write the status code directly

In either case , Responsive HTTP The status is set to 401.

spring:
  cloud:
    gateway:
      routes:
      - id: setstatusstring_route
        uri: https://example.org
        filters:
        - SetStatus=UNAUTHORIZED
      - id: setstatusint_route
        uri: https://example.org
        filters:
        - SetStatus=401

Forwarding address

visit /api/getheader Actual visit :/getheader, The destination address of forwarding must be / Otherwise it will go wrong

- RewritePath=/consumingServiceEndpoint, /backingServiceEndpoint
spring:
  cloud:
    gateway:
      routes:
      - id: rewritepath_route
        uri: https://example.org
        predicates:
        - Path=/red/**
        filters:
        - RewritePath=/red/?(?<segment>.*), /$\{
    segment}

Get rid of \ Add some levels in the request path

request /name/first/123 Actual request /123

spring:
  cloud:
    gateway:
      routes:
      - id: nameRoot
        uri: https://nameservice
        predicates:
        - Path=/name/first/**
        filters:
        #  Remove some paths from the front to the back 
        - StripPrefix=2

request /name/first/123 Actual request /prefix/name/first/123

spring:
  cloud:
    gateway:
      routes:
      - id: nameRoot
        uri: https://nameservice
        predicates:
        - Path=/name/first/**
        filters:
        #  Add prefix path 
        - PrefixPath=/prefix

Retry filter

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
            methods: GET,POST
            backoff:
              firstBackoff: 10ms
              maxBackoff: 50ms
              factor: 2
              basedOnPreviousValue: false

The filter sets the request size

filters:
    - name: RequestSize # Filter name 
      args:   # Control the size of the request , More than that, return to 413. Request maximum default 5000000  about 5M
        maxSize:1000  #1KB

spring-session

Only when integrated Spring Session Will be session Put it in Redis, To share Session function , If the project inherits Spring Session Medium Spring Security frame , If you want the security authentication information, you can forward it to the remote application , Then this configuration is necessary .

filters:
    - SaveSession

Default filter

spring:
  cloud:
    gateway:
      default-filters:
      - AddResponseHeader=X-Response-Default-Red, Default-Blue
      - PrefixPath=/httpbin
原网站

版权声明
本文为[Bulst]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/186/202207050229361624.html