Spring Cloud Gateway网关中各个过滤器的作用与介绍
Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术构建的 API 网关,它旨在提供一种简单且有效的方式来路由到 API 接口。
Spring Cloud Gateway 中的 Filter 是过滤器,对请求和响应进行修改,Spring Cloud Gateway 中的 Filter 分为两种类型:Gateway Filter 和 Global Filter。
- Gateway Filter:应用于单个路由或者一个分组的路由。
- Global Filter:应用于所有路由。
以下是一些常见的 Gateway Filter:
AddRequestHeader GatewayFilter Factory:为所有进入的请求添加一个请求头。
示例代码:
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
return builder.routes()
.route("path_route", r -> r.path("/images/**")
.filters(f -> f.addRequestHeader("Hello", "World"))
.uri("http://localhost:8079")
)
.build();
}
在上述代码中,我们为所有进入的路由添加了一个名为 "Hello" 值为 "World" 的请求头。
AddResponseHeader GatewayFilter Factory:为所有返回的响应添加一个响应头。
示例代码:
@Bean
public RouteLocator headerRouteLocator(RouteLocatorBuilder builder) {
return builder.routes()
.route("add_response_header_route", r -> r.path("/images/**")
.filters(f -> f.addResponseHeader("Hello", "World"))
.uri("http://localhost:8079")
)
.build();
}
在上述代码中,我们为所有返回的响应添加了一个名为 "Hello" 值为 "World" 的响应头。
PrefixPath GatewayFilter Factory:为所有进入的请求添加一个路径前缀。
示例代码:
@Bean
public RouteLocator prefixPathRouteLocator(RouteLocatorBuilder builder) {
return builder.routes()
.route("prefix_path_route", r -> r.path("/images/**")
.filters(f -> f.prefixPath("/prefix"))
.uri("http://localhost:8079")
)
.build();
}
在上述代码中,我们为所有进入的请求添加了一个路径前缀 "/prefix"。
RewritePath GatewayFilter Factory:重写请求路径。
示例代码:
@Bean
public RouteLocator rewritePathRouteLocator(RouteLocatorBuilder builder) {
return builder.routes()
.route("rewrite_path_route", r -> r.path("/images/**")
.filters(f -> f.rewritePath("/images/(?<segment>.*)", "/${segment}"))
.uri("http://localhost:8079")
)
.build();
}
在上述代码中,我们使用正则表达式重写了请求路径。
Hystrix Gateway Filter:为路由添加断路器保护。
示例代码:
@Bean
public RouteLocator hystrixRo
评论已关闭