spring-cloud-gateway - Spring cloud gateway Path Route Predicate 匹配失败
问题描述
在以下 Spring Cloud Gateway 配置中,我试图匹配以 结尾的路径/favicon.ico
,但它无法匹配路径:/gitBooks/100/abc/favicon.ico
spring:
cloud:
gateway:
routes:
- id: favicon
uri: forward:///favicon.ico
predicates:
- Path=**/favicon.ico
spring 云网关打印以下日志:
2020-02-04 22:57:35.703 TRACE 28356 --- [ctor-http-nio-2] o.s.c.g.h.p.RoutePredicateFactory : Pattern "[**/favicon.ico]" does not match against value "/gitBooks/100/abc/favicon.ico"
2020-02-04 22:57:35.703 TRACE 28356 --- [ctor-http-nio-2] o.s.c.g.h.RoutePredicateHandlerMapping : No RouteDefinition found for [Exchange: GET http://localhost:8080/gitBooks/100/abc/favicon.ico]
我不明白,我想知道如何编写路径预测器以匹配路径结尾favicon.ico
解决方案
我不知道为什么 PathMatcher 不起作用,最后我写了一个自定义的 Predicate:
spring:
cloud:
gateway:
routes:
- id: favicon
uri: forward:///favicon.ico
predicates:
- Favicon=
@Component
public class FaviconRoutePredicateFactory extends AbstractRoutePredicateFactory<FaviconRoutePredicateFactory.Config> {
private static final Log log = LogFactory.getLog(FaviconRoutePredicateFactory.class);
public FaviconRoutePredicateFactory() {
super(Config.class);
}
@Override
public Predicate<ServerWebExchange> apply(Config config) {
return exchange -> {
String path = exchange.getRequest().getURI().getRawPath();
return !path.equals("/favicon.ico") && path.endsWith("favicon.ico");
};
}
public static class Config {
}
}
推荐阅读
- php - 如何在 html 页面上使用 PHP 填充图像库,包括图像代码/类?
- c# - 当 id / key = 0 时,ModelState isvalid 返回 false
- python - 如何在 Django 2.0 中通知具有随机值的变量?
- javascript - 当用户滚动到结束时,如何对滚动视图进行分页?
- javascript - 当它无法识别时,我如何使用等待?
- javascript - 打印时尝试将 div 置于最后一页的页脚
- reactjs - this.state.data.map 不是函数
- google-apps-script - 添加记录每次从脚本发送电子邮件的日志
- c# - 编码格式
- templates - Google Apps 脚本 - 从模板创建的每个文档中都会出现“需要授权”