个人随笔
目录
二十五、springCloudAlibaba-gateway的内置路由断言工厂
2023-11-13 21:19:10

在上一篇二十四、springCloudAlibaba-gateway整合nacos 我们使用了Path断言,这里继续介绍更多内置的断言工厂

1、路由断言工厂作用(Route Predicate Factories)

当请求gateway的时候,使用断言对请求进行匹配,如果匹配成功就路由转发,如果匹配失败就404

这些都是在官网中有:https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/#gateway-request-predicates-factories

这里尝试下

2、基于查询条件的断言工厂

The Query Route Predicate Factory

  1. spring:
  2. cloud:
  3. gateway:
  4. routes:
  5. - id: query_route
  6. uri: https://example.org
  7. predicates:
  8. - Query=green

我们在之前的例子上机上这个

  1. - Query=green

我们访问
http://localhost:8088/order-service/order/add
返回

  1. This application has no configured error view, so you are seeing this as a fallback.
  2. Mon Nov 13 20:55:15 CST 2023
  3. [5a51068b-1] There was an unexpected error (type=Not Found, status=404).

加上参数green

http://localhost:8088/order-service/order/add?green=1
就正常返回了。

假设我们改为

  1. - Query=green,hel.

那么必须有参数green=hel*,比如
http://localhost:8088/order-service/order/add?green=helo 不然都匹配不到404

配置如

  1. gateway:
  2. #路由规则
  3. routes:
  4. - id: order_route # 路由的唯一标识
  5. uri: lb://order-service #需要转发的地址.lb本地负载均衡策略
  6. #断言规则 用于路由规则的匹配
  7. predicates:
  8. - Path=/order-service/**
  9. - Query=green,hel.
  10. #匹配请求http://localhost:8088/order-service/order/add
  11. #过滤器 用于过滤请求
  12. filters:
  13. - StripPrefix=1 #转发之前去掉第一层路径
  14. #http://localhost:8010/order/add
  15. #- id: stock_route

3、再尝试下基于After时间的断言工厂

The After Route Predicate Factory
这里的时间格式是基于ZonedDateTime类,我们先获取下

  1. public static void main(String[] args) {
  2. System.out.println(ZonedDateTime.now());
  3. }

这里获取的格式是

  1. 2023-11-13T22:05:39.811+08:00[Asia/Shanghai]

我们配置未来一个钟

  1. gateway:
  2. #路由规则
  3. routes:
  4. - id: order_route # 路由的唯一标识
  5. uri: lb://order-service #需要转发的地址.lb本地负载均衡策略
  6. #断言规则 用于路由规则的匹配
  7. predicates:
  8. - Path=/order-service/**
  9. - Query=green,hel.
  10. - After=2023-11-13T22:05:39.811+08:00[Asia/Shanghai]
  11. #匹配请求http://localhost:8088/order-service/order/add
  12. #过滤器 用于过滤请求
  13. filters:
  14. - StripPrefix=1 #转发之前去掉第一层路径
  15. #http://localhost:8010/order/add
  16. #- id: stock_route

再访问http://localhost:8088/order-service/order/add?green=helo 就404了,我们再把时间改回来

  1. - After=2023-11-13T21:05:39.811+08:00[Asia/Shanghai]

再请求,应为当前时间是配置时间之后,所以正常返回了

还有

  • The Before Route Predicate Factory(之前时间)
  • The Between Route Predicate Factory(两个时间之间)
  • The Cookie Route Predicate Factory(Cookie)
  • The Header Route Predicate Factory(请求头Header)
  • The Host Route Predicate Factory(Host)
  • The Method Route Predicate Factory(请求方法Get,Post)
  • The Path Route Predicate Factory(路径)
  • The RemoteAddr Route Predicate Factory(远程地址)

等等,参考官网的即可,这里就不演示了。

 49

啊!这个可能是世界上最丑的留言输入框功能~


当然,也是最丑的留言列表

有疑问发邮件到 : suibibk@qq.com 侵权立删
Copyright : 个人随笔   备案号 : 粤ICP备18099399号-2