如何为路由设置默认前缀?

How can I set default prefixes for routes?

我正在尝试配置 Spring-Cloud-Gateway。

基本objective是为其他服务添加路由

/some-api/**       -> http://some-api/**
/some-other-api/** -> http://some-other-api.com/**

现在唯一可用的配置是这个。

spring:
  cloud:
    gateway:
      routes:
        - id: some-api
          uri: https://some-api.com
          predicates:
            - Path=/some-api/**
          filters:
            - StripPrefix=1 # REQUIRED?
        - id: some-other-api
          uri: https://some-other-api.com
          predicates:
            - Path=/some-other-api/**./g
          filters:
            - StripPrefix=1 # REQUIRED?

我的问题是 - StripPrefix=1 行是必需的吗?

当我注释掉它们时,路由不起作用。

源服务获取前缀请求,例如。

/some-api/swagger-ui.html -> http://some-api.com/some-api/swagger-ui.html

应该是

/some-api/swagger-ui.html -> http://some-api.com/swagger-ui.html

是 必填。

StripPrefixGatewayFilterFactory 在将请求路径发送到下游之前去除部分请求路径。请检查 StringPrefixGatewayFilterFactory.
https://cloud.spring.io/spring-cloud-gateway/reference/html/#_stripprefix_gatewayfilter_factory

如果你的请求路径是/some-api/swagger-ui.html,配置是StripPrefix=1,StripPrefixGatewayFilterFactory会去掉请求路径的一部分。在这种情况下,剥离的部分是/some-api

要使其按您希望的方式工作,您必须删除请求路径的一部分。