Spring Cloud Gateway 11种断言工厂
文章来源:凌翠 时间:2025-03-11
Spring Cloud Gateway道由婚配是Spring WebFlux底子效力的1片面,正在Spring Cloud Gateway中内乱置了许多道由断行工场类。没有共的断行工场类针对于HTTP仰求的没有共属性。多个断行工场类能够应用逻辑“and”停止配合应用。
民圆文档:
https://spring.io/projects/spring-cloud-gateway
https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/#the-after-route-predicate-factory
POM引进:
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency>那里立案主题应用Nacos,装备Nacos天址
server:port:10010spring:application:name:gatewayservicecloud:nacos:server-addr:192.168.2.22:8848#Nacos天址After Route Predicate Factory
那个Predicate工场的达成类是AfterRoutePredicateFactory,应用1个期间参数,假设以后央浼的功夫正在装备的追时辰以后,此断行才会前往true。正在application.yml中的装备以下所示:
spring:cloud:gateway:routes:-id:after_routeuri:http://www.javacui.com#要是断行前往true,道由到的URIpredicates:-After=2017-01-20T17:42:47.789-07:00[America/Denver]注重那个类应用的时候类是ZonedDateTime,意味ISO-8601日历体系中具备时区的日期时刻,因此正在application.yml中的时候装备花样只可是:2017-01-20T17:42:47.789-07:00[America/Denver],字符串的功夫花样转移为ZonedDateTime应用的是StringToZonedDateTimeConverter类。假设念应用别的的时分花样,得须要本身告终1个零丁的转移类了。经由过程源码中的尝试例子能够瞅到,倘若央求正在设置的时辰之前,网闭会前往404,假设正在摆设的时光以后,网闭道由乐成到http://www.javacui.com 网站。
Before Route Predicate Factory
那个Predicate工场的杀青类是BeforeRoutePredicateFactory,它战AfterRoutePredicateFactory的达成基础上是分歧的,正在application.yml中的设备以下所示:
spring:cloud:gateway:routes:-id:before_routeuri:http://www.javacui.com#道由到的URIpredicates:-Before=2017-01-20T17:42:47.789-07:00[America/Denver]假若以后苦求的时光正在建设的技术之前,此断行前往true。
Between Route Predicate Factory
spring:cloud:gateway:routes:-id:between_routeuri:http://www.javacui.compredicates:-Between=2017-01-20T17:42:47.789-07:00[America/Denver],2017-01-21T17:42:47.789-07:00[America/Denver]当要求网闭的年光正在datatime1以后,正在datetim2之前时,那个断行前往true。那个断行看待帮忙1个时光窗心很有效。例如限定正在基某段时代内乱打开的举动,非那个岁月段不行以拜候等。
Cookie Route Predicate Factory
那个Predicate工场的达成类是CookieRoutePredicateFactory,它有二个参数,1个是name,另外一个是正则表白式。正在application.,yml中的设备以下所示:
spring:cloud:gateway:routes:-id:cookie_routeuri:http://www.javacui.compredicates:-Cookie=username,javacui假若吁请的Cookie中有name的值,而且凭据name与出的值皆婚配设备的正则表白式,那个断圆便前往true。
Header Route Predicate Factory
那个Predicate工场的告竣类是HeaderRoutePredicateFactory,它有二个参数,1个是name,另外一个是正则表白式。正在application.yml中的设置以下所示:
spring:cloud:gateway:routes:-id:header_routeuri:http://www.javacui.compredicates:-Header=X-Request-Id,\d+假设哀告的Header内里有name的值,而且它的值取设置的正则抒发式婚配,则断行前往true,借使不建设正则表白式的值,断行也是前往true(断圆只检测带正则表白式的建设)。下面的摆设示例意味Header中必需有X-Request-Id,且它的值必需是数字。
Host Route Predicate Factory
那个Predicate的工场的实行类是HostRoutePredicateFactory,那有1个参数,那个参数是1人List列表,它能够包括多个主机实字婚配的款式。它遵照Ant的形状气概,以面(.)隔离。正在application.yml中的设备以下所示:
spring:cloud:gateway:routes:-id:host_routeuri:http://www.javacui.compredicates:-Host=**.javacui.org,**.javacui.org借使仰求的Header中的Host的值是www.javacui.com,www.javacui.org,那个断行便会前往true。
正在断圆工场中会索取下面建设中Host对于应的URI模板变量(例如下面的sub),把婚配的URI搁到1个Map中,那个Map会被加添到ServerWebExchange.getAttributes(ServerWebExchangeUtils.URI_TEMPLATE_VARIABLES_ATTRIBUTE)的属性散中。能够正在前面的Gateway Filter工场类应用。
注重,正在设备Host的时分,假若Host没有是80端心,正在建设的时分也须要加加入端心。如:localhost:8080。
Method Route Predicate Factory
那个Predicate的告竣类是MethodRoutePredicateFactory,它有1个参数:指定的Http办法实。正在application.yml中的设备以下所示:
spring:cloud:gateway:routes:-id:method_routeuri:http://www.javacui.compredicates:-Method=GET借使那个乞请的办法实是GET,断行将前往true。
Path Route Predicate Factory
那个Predicate的达成类是PathRoutePredicateFactory,它有二个参数,1个是婚配款式列表,另外一个是boolean值,展现能否婚配分割线。正在application.yml中的建设佳停所示:
spring:cloud:gateway:routes:-id:path_routeuri:http://www.javacui.compredicates:-Path=/foo/{segment},/bar/{segment}倘若仰求的URI中的途径是/foo/1,/foo/bar或者/bar/baz,那个断行将前往true。那个断行工场将会索取设置的URI花样中的变量(例如下面建设的segment),并将它转移为Map,调换失落ServerWebExchange.getAttributes(ServerWebExchangeUtils.URI_TEMPLATE_VARIABLES_ATTRIBUTE)中的值。那个值能够正在GatewayFilter工场中应用。有1个办法能够便利的拜候那些值,以下里代码所示:
Map<String,String>uriVariables=ServerWebExchangeUtils.getPathPredicateVariables(exchange);Stringsegment=uriVariables.get("segment");Query Route Predicate Factory
那个是参数道由断行工场,它的杀青类是QueryRoutePredicateFactory,它有二个参数,1个是参数(param),那个是必需的,另外一个是可选参数,是1个正则抒发式。正在application.yml中没有带正则的设备以下所示:
spring:cloud:gateway:routes:-id:query_routeuri:http://www.javacui.compredicates:-Query=baz假如哀求的参数中包括baz参数,断行将前往true
spring:cloud:gateway:routes:-id:query_routeuri:http://www.javacui.compredicates:-Query=foo,ba.若是央浼的参数中包括foo,且它的值婚配ba.,断行将前往true。
RemoteAddr Route Predicate Factory
那个是近程天址道由断行工场,它的告竣类是RemoteAddrRoutePredicateFactory,它有1个List列表的参数,那些参数是CIDR-notation(IPv4战IPv6)的天址字符串,例如192.168.0.1/16(192.168.0.1是ip天址,16是1身材网遮码)。正在application.yml中的摆设以下所示:
spring:cloud:gateway:routes:-id:remoteaddr_routeuri:http://www.javacui.compredicates:-RemoteAddr=192.168.1.1/24假如仰求的客户真个ip天址是192.168.1.1到192.168.1.24的鸿沟,此断行前往true。
Weight Route Predicate Factory
Spring Cloud Gateway 供给了鉴于道由权沉的断行工场,摆设时指定分组战权沉值 便可。WeightRoutePredicateFactory 达成了道由权沉的性能,依照道由权沉采取 统一个分组中的道由。
The Weight route predicate factory takes two arguments: group and weight (an int). The weights are calculated per group. The following example configures a weight spring:
spring:cloud:gateway:routes:-id:weight_highuri:https://weighthigh.orgpredicates:-Weight=group1,8-id:weight_lowuri:https://weightlow.orgpredicates:-Weight=group1,2This route would forward ~80% of traffic to weighthigh.org and ~20% of traffic to weightlow.org
推举您浏览更多相关于“ springCloudGatewayRoutePredicateFactories ”的作品
文章推荐
Copyright © 2024-2025 燿动吧 – 知识分享,快乐你我,燿动青春 http://www.yaodong8.com All Rights Reserved 网站地图