SpringCloud Gateway放行接口的4种方式
Spring Cloud Gateway提供了多种方式来放行接口,以下是四种常见的方式:
- 通过路由配置指定路径
在application.yml中配置Gateway路由规则,指定路径进行放行。
spring:
cloud:
gateway:
routes:
- id: after_route
uri: https://example.org
predicates:
- Path=/test/**
在上述配置中,所有访问/test/
开头的请求都会被转发到https://example.org
。
- 通过路由配置指定Host
在application.yml中配置Gateway路由规则,指定Host进行放行。
spring:
cloud:
gateway:
routes:
- id: host_route
uri: https://example.org
predicates:
- Host=**.somehost.org
在上述配置中,所有访问somehost.org
域名的请求都会被转发到https://example.org
。
- 通过过滤器放行
通过定义Gateway过滤器,在请求过滤阶段进行放行处理。
@Component
public class CustomGlobalFilter implements GlobalFilter, Ordered {
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
// 放行指定路径的请求
if (exchange.getRequest().getURI().getPath().startsWith("/test")) {
return chain.filter(exchange);
}
// 其他请求不放行,直接返回
exchange.getResponse().setStatusCode(HttpStatus.NOT_FOUND);
return exchange.getResponse().setComplete();
}
@Override
public int getOrder() {
// 确保过滤器在最前面执行
return -1;
}
}
- 通过Predicate Factory放行
通过实现Gateway的Predicate Factory接口,自定义Predicate放行规则。
@Component
public class CustomRoutePredicateFactory extends AbstractRoutePredicateFactory<CustomRoutePredicateFactory.Config> {
public CustomRoutePredicateFactory() {
super(Config.class);
}
@Override
public Predicate<ServerWebExchange> apply(Config config) {
return exchange -> exchange.getRequest().getURI().getPath().startsWith(config.getPath());
}
@Override
public List<String> shortcutFieldOrder() {
return Collections.singletonList("path");
}
public static class Config {
private String path;
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
}
}
在application.yml中使用自定义Predicate:
spring:
cloud:
gateway:
routes:
- id: custom_predicate_route
uri: https://example.org
predicates:
- CustomRoute=path=/test
以上四种方式可以根据实际需求选择使用,Spring Cloud Gateway提
评论已关闭