spring - Spring Cloud Gateway API - 路由上的上下文路径不起作用
问题描述
我在 application.yml 中设置了上下文路径
server:
port: 4177
max-http-header-size: 65536
tomcat.accesslog:
enabled: true
servlet:
context-path: /gb-integration
我已经配置了一些路线
@Bean
public RouteLocator routeLocator(RouteLocatorBuilder builder) {
final String sbl = "http://localhost:4178";
return builder.routes()
//gb-sbl-rest
.route("sbl", r -> r
.path("/sbl/**")
.filters(f -> f.rewritePath("/sbl/(?<segment>.*)", "/gb-sbl/${segment}"))
.uri(sbl)).build();
}
我希望使用 localhost:4177/gb-integration/sbl/** 访问 API 网关但是它仅适用于 localhost:4177/sbl/**
似乎我的上下文路径被忽略了。有什么想法可以让我的上下文路径在我的所有路线上工作吗?
解决方案
您可能已经自己弄清楚了,但这对我有用:
在阅读了 Spring Cloud 文档并自己尝试了很多东西之后,我最终选择了按路由配置的路由。在您的情况下,它看起来像这样:
.path("/gb-integration/sbl/**")
并为每条路线重复相同的模式。
.path("/gb-integration/abc/**")
...
.path("/gb-integration/def/**")
您实际上可以在spring cloud 文档中看到这一点。
spring 云文档似乎正在进行中。希望我们能找到更好的解决方案。
推荐阅读
- java - 将 10 乘以小于或等于 40 的数字的问题
- javascript - HTML 中的 DatePicker 或文本框
- android - 如何在 Android 上使用 azure sql 数据库验证电话号码?
- haskell - 在类型级别迭代符号列表
- javascript - 通过 pdf.js 查看器(画布)向文本层(div)添加 Javascript 调用
- javascript - 使用 web worker 进行字符串化
- python - 基于txt文件使用Python对数据进行排序
- python - 从文本文件中删除随机选择
- firebase - Firestore 查询变量以填充共享首选项
- swift - dataTask 在展开可选值时意外发现 nil