版本:2.0.2.RELEASE
链接:http://spring.io/projects/spring-cloud-gateway#overview
本章主要目录如下:
Spring Cloud Gateway网关过滤器工厂是什么?
本章主要内容如下:
Spring Cloud Gateway网关过滤器工厂是什么?
路由过滤器允许以某种方式修改传入的 HTTP 请求或输出的 HTTP 响应。路由过滤器作用于特定路由。Spring Cloud Gateway 包含许多内置的 GatewayFilter 工厂。
注意:有关如何使用下面的任何过滤器的更详细的示例,请看单元测试。
-
AddRequestHeader 网关过滤器工厂
添加请求头网关过滤器工厂可以在请求头中添加一对键值对参数。
application.yml
spring:
cloud:
gateway:
routes:
- id: add_request_header_route
uri: http://example.org
filters:
- AddRequestHeader=X-Request-Foo, Bar
这将为所有匹配请求的下游请求头部添加 X-Request-Foo:Bar。
-
AddRequestParameter 网关过滤器工厂
添加请求参数网关过滤器工厂可以在请求中添加一对请求参数的键值对。
application.yml
spring:
cloud:
gateway:
routes:
- id: add_request_parameter_route
uri: http://example.org
filters:
- AddRequestParameter=foo, bar
这会将 foo=bar 添加到所有匹配请求的下游请求的查询字符串中。
-
AddResponseHeader 网关过滤器工厂
添加响应头网关过滤器工厂可以在响应头中添加键值对。
application.yml
spring:
cloud:
gateway:
routes:
- id: add_request_header_route
uri: http://example.org
filters:
- AddResponseHeader=X-Response-Foo, Bar
这会将 X-Response-Foo:Bar 添加到所有匹配请求的下游响应头部中。
-
Hystrix 网关过滤器工厂
Hystrix 是 Netflix 的一个库,它实现了断路器模式。Hystrix 网关过滤器允许您将断路器引入到网关路由,保护您的服务免受级联故障的影响,并允许您在下游故障时提供回退响应。
要在项目中启用Hystrix 网关过滤器,请从Spring Cloud Netflix中添加spring-cloud-starter-netflix-hystrix依赖项。
Hystrix 网关过滤器需要一个名称参数,该参数是HystrixCommand 的名称。
application.yml
spring:
cloud:
gateway:
routes:
- id: hystrix_route
uri: http://example.org
filters:
- Hystrix=myCommandName
这将使用命令名称 myCommandName 将剩余的过滤器包装在 HystrixCommand 中。
Hystrix过滤器还可以接受可选的fallbackUri参数。 目前,仅支持forward:schemed URIs。如果调用了回退,请求将被转发到与 URI 匹配的控制器。
application.yml
spring:
cloud:
gateway:
routes:
- id: hystrix_route
uri: lb://backing-service:8088
predicates:
- Path=/consumingserviceendpoint
filters:
- name: Hystrix
args:
name: fallbackcmd
fallbackUri: forward:/incaseoffailureusethis
- RewritePath=/consumingserviceendpoint, /backingserviceendpoint
当调用 Hystrix 回退时,将转发到/incaseoffailur