Spring Cloud Gateway 没有看到 url 请求末尾的斜线

Spring Cloud Gateway doesn't see the slash at the end of the url request

我有以下配置:

gateway:
  discovery:
  locator:
    enabled: true
    predicates:
      - name: Path
        args:
          pattern: "'/api/'+serviceId.toLowerCase()+'/**'"
    filters:
      - name: RewritePath
        args:
          regexp: "'/api/' + serviceId.toLowerCase() + '/(?<remaining>.*)'"
          replacement: "'/${remaining}'"

如果我用 ...api/serviceName/ 发送请求 - OK

但是如果我用 ...api/serviceName 发送请求 - 它 returns 404 NOT FOUND

如何更改属性以便可以使用末尾没有斜线的 URL?

谢谢!

我相信您在谓词正则表达式中强制使用斜线:

pattern: "'/api/'+serviceId.toLowerCase()+'/**'"

尝试使其成为有条件的(“/**”的 0 或 1 个实例):

pattern: "'/api/'+serviceId.toLowerCase()+'(/**)?'"

问题是过滤器中有多余的斜线:

这个:

regexp: "'/api/' + serviceId.toLowerCase() + '/(?<remaining>.*)'"
                replacement: "'/${remaining}'"

应替换为:

regexp: "'/api/' + serviceId.toLowerCase() + '(?<remaining>.*)'"
                replacement: "'/${remaining}'"