11种路由断言工厂

 1、After Route Predicate

spring:
   cloud:
     gateway:
       routes:
         - id: after_route
           uri: http://localhost:80017           
           predicates:
             - After=2020-04-20T23:57:57.308+08:00[Asia/Shanghai]

  2、Before Route Predicate

  所述Before断言有一个参数,一个datetime(其是Java ZonedDateTime)。该断言匹配在指定之前发生的请求datetime。以下示例配置了路由前断言:

spring:
   cloud:
     gateway:
       routes:
         - id: before_route
           uri: http://localhost:80017           
           predicates:
             - Before=2020-04-21T23:57:57.308+08:00[Asia/Shanghai]

  这路由符合2020年4月21日23:57时区时间(上海)之前的任何请求。

  3、Between Route Predicate

  该Between断言有两个参数,datetime1并且datetime2 这是Java ZonedDateTime对象。该断言匹配在之后datetime1和之前发生的请求datetime2。该datetime2参数必须是后datetime1。以下示例配置了路由之间的断言:

spring:
   cloud:
     gateway:
       routes:
         - id: between_route
           uri: http://localhost:8001
           predicates:
             - Between=2020-04-20T23:57:57.308+08:00[Asia/Shanghai], 2020-04-21T23:57:57.308+08:00[Asia/Shanghai]

  4、Cookie Route Predicate

  所述Cookie断言采用两个参数,该cookie nameregexp(其是Java正则表达式)。该断言匹配具有给定名称且其值与正则表达式匹配的cookie。以下示例配置Cookie路由断言:

 spring:
   cloud:
     gateway:
       routes:
         - id: cookie_route
           uri: http://localhost:8001
           predicates:
             - Cookie=username, xiaoming

  此路由匹配具有名称为username与xiaoming正则表达式匹配的cookie的请求。

  测试请求命令:curl http://localhost:9527/payment/get/1 --cookie "username=xiaoming"    

  5、Header Route Predicate

  所述Header断言采用两个参数,报头name和一个regexp(其是Java正则表达式)。该断言与具有给定名称且其值与正则表达式匹配的标头匹配。以下示例配置标头路由断言:

 spring:
   cloud:
     gateway:
       routes:
         - id: header_route
           uri: http://localhost:8001
           predicates:
             - Header=X-Request-Id, \d+

  如果请求具有名为X-Request-Id其值与\d+正则表达式匹配的标头(即,其值为一个或多个数字),则此路由匹配。

  测试请求命令:curl http://localhost:9527/payment/get/1 -H "X-Request-Id:123"

  6、Host Route Predicate

  该Host断言需要一个参数:主机名的列表patterns。该模式是带有.分隔符的Ant样式的模式。断言与Host匹配模式的标头匹配。以下示例配置主机路由断言:

 spring:
   cloud:
     gateway:
       routes:
         - id: host_route
           uri: http://localhost:8001
           predicates:
             - Host=**.x.com

     如果请求具有这种路由匹配Host用的头值**.x.com

  测试请求命令:curl http://localhost:9527/payment/get/1 -H "Host:demo1.x.com"

  7、Method Route Predicate

  所述Method断言需要methods的参数,它是一个或多个参数:HTTP方法来匹配。以下示例配置方法路由断言:

 spring:
   cloud:
     gateway:
       routes:
         - id: method_route
           uri: http://localhost:8001
           predicates:
             - Method=GET

  测试请求命令:curl http://localhost:9527/payment/get/1 -X GET

  8、Path Route Predicate

  该Path断言有两个参数:春天的列表PathMatcher patterns和一个可选的标志叫matchOptionalTrailingSeparator。以下示例配置路径路由断言:

 spring:
   cloud:
     gateway:
       routes:
         - id: path_route
           uri: http://localhost:8001
           predicates:
             - Path=/payment/get/**

  测试请求命令:curl http://localhost:9527/payment/get/1 

  9、Query Route Predicate

  所述Query断言采用两个参数:所要求的param和可选的regexp(其是Java正则表达式)。以下示例配置查询路由断言:

 spring:
   cloud:
     gateway:
       routes:
         - id: query_route
           uri: http://localhost:8001
           predicates:
             - Query=green

  如果请求包含green查询参数,则前面的路由匹配。

  测试请求命令:curl http://localhost:9527/payment/get/1?green=1

  10、RemoteAddr Route Predicate

  所述RemoteAddr断言需要的列表sources,其是CIDR的表示法(IPv4或IPv6)的字符串,如192.168.0.1/16(其中192.168.0.1是一个IP地址和16一个子网掩码)。以下示例配置一个RemoteAddr路由谓词:

 spring:
   cloud:
     gateway:
       routes:
         - id: query_route
           uri: http://localhost:8001
           predicates:
             - RemoteAddr=192.168.1.1/24

  请求测试命令:curl http://192.168.1.4:9527/payment/get/1

  11、Weight Route Predicate

  该Weight断言有两个参数:groupweight(一个int)。权重是按组计算的。以下示例配置权重路由断言:

 spring:
   gateway:
     discovery:
       routes:
         - id: weight_high
           uri: http://localhost:8001
           predicates:
             - Weight=group1, 8
         - id: weight_low           
           uri: http://localhost:8002
           predicates:
             - Weight=group1, 2

  这条路线会将大约80%的流量转发到http://localhost:8001,将大约20%的流量转发到http://localhost:8001

  请求测试命令:curl http://localhost:9527/payment/get/1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值