spring-cloud/spring-cloud-gateway

More flexible path matching (such as file extensions and logical or)

Open

#672 建立於 2018年11月22日

在 GitHub 查看
 (13 留言) (1 反應) (0 負責人)Java (3,204 fork)batch import
enhancementhelp wanted

倉庫指標

Star
 (4,284 star)
PR 合併指標
 (平均合併 1天 21小時) (30 天內合併 18 個 PR)

描述

Bug report

spring-cloud-version: Finchley.SR2

I has a requirement that route www.example.com/**/*.html to lb://serviceNodeJs, and route www.example.com/** to lb://serviceJava, so I wrote the following yaml file:

spring:
  cloud:
    gateway:
      routes:
      - id: test1
        uri: lb://serviceNodeJs
        predicates:
        - Host=www.example.com
        - Path=/**/*.html
      - id: test2
        uri: lb://serviceJava
        predicates:
        - Host=www.example.com
        - Path=/**

But when I browse http://www.example.com/index.html, it is routed to lb://serviceJava, my idea is that all the requests with the .html postfix being routed to lb://serviceNodeJs, and all the others being routed to lb://serviceJava, And I have also read the source code PathRoutePredicateFactory, I found that it use a new class PathPattern to test if it matches. If I use AntPathMatcher, it can support my requirement. so can PathPattern changed to meet this requirement?

貢獻者指南