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}'"
我有以下配置:
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}'"