首页 > 解决方案 > 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/**

似乎我的上下文路径被忽略了。有什么想法可以让我的上下文路径在我的所有路线上工作吗?

标签: springspring-cloudspring-cloud-gateway

解决方案


您可能已经自己弄清楚了,但这对我有用:

在阅读了 Spring Cloud 文档并自己尝试了很多东西之后,我最终选择了按路由配置的路由。在您的情况下,它看起来像这样:

.path("/gb-integration/sbl/**")

并为每条路线重复相同的模式。

.path("/gb-integration/abc/**")
...
.path("/gb-integration/def/**")

您实际上可以在spring cloud 文档中看到这一点。

spring 云文档似乎正在进行中。希望我们能找到更好的解决方案。


推荐阅读