首页 > 解决方案 > Spring Cloud Gateway 在 url 请求的末尾看不到斜杠

问题描述

我有以下配置:

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- 它返回 404 NOT FOUND

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

谢谢!

标签: spring-bootspring-cloud-gateway

解决方案


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

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

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

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

推荐阅读