Spring 网关使用查询字符串参数构建不正确 URL

Spring Gateway builds incorrect URL with query string parameters

我有一个 Spring 具有此映射的网关微服务:

  - id: advertisementService4
    uri: lb://advertisementService
    predicates:
      - Path=/public/breeds/**
    filters:
      - RewritePath=/public/breeds/(?<segment>/?.*), /v1/public/breeds/$\{segment}

如果我用 Postman 调用此 url: http://192.168.99.1:8050/public/breeds/500,gateWay 服务会解析映射并以正确的方式构建新的 url(到 /v1/public/breeds/500):

但是如果我调用此 url http://192.168.99.1:8050/public/breeds?petType=Dog,gateWay 服务会选择正确的映射,但它会以错误的方式构建 url:

gateWay 服务构建 http://7a32a826ec7a:8070/public/breeds?petType=Dog 而不是 http://7a32a826ec7a:8070/v1/public/breeds?petType=Dog(带有 v1 在 URL)

我不明白为什么。你能帮帮我吗?

我通过更改 RewritePath 修复了它:

from RewritePath=/public/breeds/(?/?.), /v1/public/breeds/${segment}
RewritePath=/(?/?.
), /v1/${segment}