Spring Cloud(十四):Gateway-Predicate的使用

1. Predicate的使用

Spring Cloud Gateway将路由匹配作为Spring WebFlux HandlerMapping基础架构的一部分。

Spring Cloud Gateway包括许多内置的Route Predicate工厂。所有这些Predicate都与HTTP请求的不同属性匹配。多个RoutePredicate厂可以进行组合

Spring Cloud Gateway创建Route对象时,使用RoutePredicateFactory创建Predicate对象,Predicate 对象可以赋值给Route。Spring Cloud Gateway包含许多内置的Route Predicate Factories.

所有这些谓词都匹配HTTP请求的不同属性。多种谓词工厂可以组合,并通过逻辑and。

1.1 常用的Route Predicate

在这里插入图片描述

1.1.1 After Route Predicate

after路由谓词工厂接受一个参数,一个datetime。此谓词匹配发生在指定日期时间之后的请求。

yml:
在这里插入图片描述
可以正常访问,
在这里插入图片描述

当修改时间为"明天“
在这里插入图片描述

1.1.2 Before Route Predicate

before route谓词工厂接受一个参数,即datetime。此谓词匹配发生在指定日期时间之前的请求。

同上,只有请求时间在指定日期之前可访问。
在这里插入图片描述

1.1.3 Between Route Predicate Factory

同上:请求的时间需要在指定的两个时间段内

扫描二维码关注公众号,回复: 13136600 查看本文章

路由之间的谓词工厂接受两个参数,datetime1和datetime2。此谓词匹配发生在datetime1之后和datetime2之前的请求。datetime2参数必须位于datetime1之后。
在这里插入图片描述

1.1.4 Cookie Route Predicate Factory

cookie路由谓词工厂接受两个参数,cookie名称和一个正则表达式。此谓词匹配具有给定名称且其值与正则表达式匹配的cookie。

yml:
在这里插入图片描述

get请求

curl http://localhost:9527/payment/lb --cookie "username=zhangl”

1.1.5 Header Route Predicate Factory

在这里插入图片描述

头路由谓词工厂接受两个参数,头名称和一个正则表达式。此谓词与具有给定名称的头匹配,该头的值与正则表达式匹配。

curl http://localhost:9527/payment/lb -H "X-Request-Id:123" --cookie "username=zhangl”

1.1.6 Host Route Predicate

在这里插入图片描述
主机路由谓词工厂接受一个参数:主机名模式列表。该模式是一个ant样式的模式。作为分隔符。此谓词匹配与模式匹配的主机头。

在这里插入图片描述

curl -H Host:www.liang.com localhost:9527/payment/lb

1.1.7 Method Route Predicate

在这里插入图片描述
方法路由谓词工厂接受一个或多个参数:要匹配的HTTP方法
如果请求方法是GET或POST,则此路由匹配。

1.1.8 Path Route Predicate

在这里插入图片描述
路径路由谓词工厂接受两个参数:Spring PathMatcher模式列表和一个称为matchOptionalTrailingSeparator的可选标志。

1.1.9 Query Route Predicate

在这里插入图片描述
查询路由谓词工厂接受两个参数:一个必需的参数和一个可选的regexp。

在这里插入图片描述

Predicate就是为了实现一组匹配规则,让请求过来找到对应的Route进行处理

猜你喜欢

转载自blog.csdn.net/houwanle/article/details/115189416