spring-cloud-gateway - Spring-cloude-gateway fluent java api有不同的谓词定义方式
问题描述
在我们的代码中,我们使用 Spring Cloud Gateway 使用 fluent java 路由 API 动态配置到服务的路由。假设我们要过滤传入请求的路径。我们可以通过两种方式实现这一点,我的问题是关于两者之间的区别:
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder, ThrottleGatewayFilterFactory throttle) {
return builder.routes()
.route(r ->
r.host("**.abc.org")
.and()
.path("/image/png")
.uri("http://httpbin.org:80")
)
.route(r ->
r.host("**.abc.org")
.uri("http://httpbin.org:80")
.and(ServerWebExchangeUtils.toAsyncPredicate(
new PathRoutePredicateFactory().apply(config -> config.setPattern("/images/jpeg")))
)
.build();
}
在第一个路由中,我们通过调用
PredicateSpec.path()
.在第二个示例中,我们使用
Route.AsyncBuilder.and()
(Route.AsyncBuilder
是.uri()
方法返回的类型) 配置路径。
显然,第一种方式更具可读性和简单性。但我想在方法之后定义谓词有一个用例uri()
吗?在调用 to 之前或之后定义谓词有什么区别uri()
?
解决方案
推荐阅读
- c# - uwp 无法将文本附加到文件
- python - 通过阅读线查找网站IP
- python - 如何从网页源中获取字符串,但 Beautifulsoup 中没有
- c++ - protobuf 的 ParseFromString 函数返回 false
- amazon-web-services - IAM 中的角色是什么?
- intersystems-cache - 访问缓存 Objectscript 中的实例变量
- react-native - WIX Navigation V2 - 推送到新屏幕时隐藏底部标签栏
- ruby-on-rails - Rails JSON 过滤器关联结果
- php - Laravel 5.6 将注册表移动到模式弹出窗口
- c - 将文本文件中的值扫描到结构中