004-spring cloud gateway-GatewayFilter Factories

Posted 木子旭

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的主要内容,如果未能解决你的问题,请参考以下文章

spring cloud gateway 如何工作

Spring Cloud Gateway集成

Spring Cloud实战Spring Cloud GateWay服务网关

spring cloud gateway 的执行流程

Spring Cloud —— Gateway 服务网关

浅谈Spring Cloud Gateway技术