如何在 Spring 云网关中添加前置过滤器
How to add Pre Filter in Spring cloud gateway
我正在使用 spring 云网关将请求路由到我的下游应用程序
我有路由器定义如下
@Configuration
public class SpringCloudConfig {
@Bean
public RouteLocator gatewayRoutes(RouteLocatorBuilder builder) {
return builder.routes()
.route(r -> r.path("/user/test/**")
.uri("http://localhost:8081/test")
.id("testModule"))
.build();
}
}
路由工作正常,现在我需要添加一个预过滤器,它可以做一些前置条件并获得路由路径。但不知道如何动态更改 uri .uri("http://localhost:8081/test")
下面是我在 preFilter 中尝试的代码。
@Component
public class testPreFilter extends AbstractGatewayFilterFactory {
@Override
public GatewayFilter apply(Config config) {
System.out.println("inside testPreFilter.apply method");
return (exchange, chain) -> {
//get headers and do lookup for URI in mapping DB
**//If contains return modify the uri**
return chain.filter(exchange.mutate().request(request).build());
//else 401
};
}
}
所以我需要从传入路径 /user/test/** 转发到 http://localhost:8081/test1 或 http://localhost:8081/test2 基于数据库查找 return 在我的自定义过滤器
你基本上改变了我相信的道路,所以你可以 this 时尚地做到这一点。
根据您从数据库中获取的值,设置路径。
我正在使用 spring 云网关将请求路由到我的下游应用程序 我有路由器定义如下
@Configuration
public class SpringCloudConfig {
@Bean
public RouteLocator gatewayRoutes(RouteLocatorBuilder builder) {
return builder.routes()
.route(r -> r.path("/user/test/**")
.uri("http://localhost:8081/test")
.id("testModule"))
.build();
}
}
路由工作正常,现在我需要添加一个预过滤器,它可以做一些前置条件并获得路由路径。但不知道如何动态更改 uri .uri("http://localhost:8081/test")
下面是我在 preFilter 中尝试的代码。
@Component
public class testPreFilter extends AbstractGatewayFilterFactory {
@Override
public GatewayFilter apply(Config config) {
System.out.println("inside testPreFilter.apply method");
return (exchange, chain) -> {
//get headers and do lookup for URI in mapping DB
**//If contains return modify the uri**
return chain.filter(exchange.mutate().request(request).build());
//else 401
};
}
}
所以我需要从传入路径 /user/test/** 转发到 http://localhost:8081/test1 或 http://localhost:8081/test2 基于数据库查找 return 在我的自定义过滤器
你基本上改变了我相信的道路,所以你可以 this 时尚地做到这一点。
根据您从数据库中获取的值,设置路径。