我有一个自定义网关过滤器,该过滤器使用application.yml中编写的路由, 当我想将路由谓词从 / test / myTest 更改为 / public 时,请求返回404像未对“ /”进行协调,因为我试图将/ test-myTest更改为/ public,并且可以正常工作。
任何想法,请问我如何使用具有/ name / name / **格式的谓词
这是我的application.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]
{“ timestamp”:“ 2020-08-26T15:44:12.023 + 0000”,“ path”:“ / test / myTest / whatever”,“ status”:404,“ error”:“ Not 找到“,”消息“:null,” requestId“:” e7baeeeb-6“}
java.lang.AssertionError:预期状态:<200 OK>,但之前是:<404 NOT_FOUND>
答案 0 :(得分:0)
spring:
cloud:
gateway:
routes:
- id: nameRoot
uri: https://nameservice
predicates:
- Path=/name/**
filters:
- StripPrefix=2
通过网关向/name/blue/red
发出请求时,对nameservice
的请求看起来像nameservice/red
。
您应该将1更改为2。