Spring Cloud Gateway路由生成器缺少谓词选项



我想在下面的spring-gateway路由中添加一个谓词

public RouteLocator routeLocator(RouteLocatorBuilder builder,
CredentialsAuthRoutePredicateFactory ca) {
return builder.routes()
.route("superGraph - get data",r -> r
.path( "/alcoholic-alpaca/**")
.predicate(...)

然而,谓词选项带有下划线,并且显示了以下错误:

'predicate' is not public in 'org.springframework.cloud.gateway.route.builder.BooleanSpec'. Cannot be accessed from outside package

在这种情况下,我如何访问谓词?

PredicateSpecpath(String path)方法也是一个谓词(像特殊情况一样(,所以如果您想要多个谓词,您应该调用BooleanSpecand()or()方法(取决于您的场景(,然后调用另一个谓词方法,像这样:

public RouteLocator routeLocator(RouteLocatorBuilder builder, CredentialsAuthRoutePredicateFactory ca) {
return builder.routes()
.route("superGraph - get data",
r -> r.path( "/alcoholic-alpaca/**")
.and() // or() ?
.predicate(alpacaPredicate)
.filters(f -> f.filter(alpacaFilter))
.uri(soberAlpacaUri))
.build();
}

最新更新