spring-cloud-gateway路径路由谓词不接受“ /”

时间:2020-08-26 16:34:30

标签: java spring-boot spring-cloud-config spring-cloud-gateway

我有一个自定义网关过滤器,该过滤器使用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>

1 个答案:

答案 0 :(得分:0)

来自documentation

spring:
  cloud:
    gateway:
      routes:
      - id: nameRoot
        uri: https://nameservice
        predicates:
        - Path=/name/**
        filters:
        - StripPrefix=2

通过网关向/name/blue/red发出请求时,对nameservice的请求看起来像nameservice/red

您应该将1更改为2。