我有一个自定义网关过滤器,它使用application.yml中编写的路由,当我想将路由谓词从/test/myTest更改为/public时,请求返回404/"没有重新配置,因为我试图将myTest更改为/public并进行测试,这是有效的。
有什么想法吗?请告诉我如何使用这种格式的谓词/name/name/**
这是我的申请。yml:
myTest-gateway:
default-uri: https://app
apps:
/test/myTest: mymicroservice-name
spring:
cloud:
gateway:
enabled: false
x-forwarded:
proto-enabled: false
routes:
- id: appsPrefixPathPublic
uri: ${myTest-gateway.default-uri}
predicates:
- AppPath=/test/myTest
filters:
- StripPrefix=1
- PrefixPath=/public
这就是我得到的错误:
无内容
<404未找到NOT_FOUND<内容类型:[application/json]<内容长度:[147]
{"时间戳":"2020-08-26T15:44:12.023+00000","路径":"/test/myTest/anthe","状态":404,"错误":"否Found"消息":null;requestId":"e7baeeeb-6"}
java.lang.AssertionError:预期状态:<200 OK>但是是:<404NOT_FOUND>
来自文档:
spring:
cloud:
gateway:
routes:
- id: nameRoot
uri: https://nameservice
predicates:
- Path=/name/**
filters:
- StripPrefix=2
当通过网关向/name/blue/red
发出请求时,向nameservice
发出的请求看起来像nameservice/red
。
您应该将1更改为2。