spring:
cloud:
gateway:
routes:
- id: test_my_provider # 自定义,全局唯一即可
uri: http://localhost:8081 # 实际调用的地址
predicates:
- Path=/test/** # 请求匹配规则
- id: test_my_consumer
uri: http://localhost:8082
predicates:
- Path=/feign/**
上一篇文章 gateway 快速入门的配置文件如上,uri 中 ip 和 port 写死的,请求最终会到具体的某个节点,如果多节点部署,直接G
多节点 uri
8081 对应服务是 my-test-provider,8082 对应的服务是 my-test-consumer,如下改动即可
- id: test_my_provider
uri: lb://my-test-provider # 服务名代替 ip+port
predicates:
- Path=/test/**
- id: test_my_consumer
uri: lb://my-test-consumer # 服务名代替 ip+port
predicates:
- Path=/feign/**
predicates 更多用法
前面 predicates 只是配了一个 Path,表示匹配 url,还能增加判断规则,即使能找到 url,也要满足条件才能调用,默认的有 12 种
-
时间判断
-
BeforeRoutePredicateFactory、AfterRoutePredicateFactory、BetweenRoutePredicateFactory
-
指定时间之前、指定时间之后、时间范围内(如果是范围英文逗号分隔,start,end)
-
值是 ZonedDateTime 决定的
public static void main(String[] args) { System.out.println(ZonedDateTime.now()); } // 2024-07-15T21:41:48.868923400+08:00[Asia/Shanghai]
-
比如电商系统某个商品限时抢购,2024-07-13 一整天
- id: flash-sale-promotion uri: lb://my-test-provider # 服务名代替 ip+port predicates: - Path=/onsale/** - Between=2024-07-13T00:00:00+08:00[Asia/Shanghai],2024-07-14T00:00:00+08:00[Asia/Shanghai]
-
-
cookie 判断
- id: flash-sale-promotion uri: lb://my-test-provider # 服务名代替 ip+port predicates: - Path=/onsale/** - Between=2024-07-13T00:00:00+08:00[Asia/Shanghai],2024-07-14T00:00:00+08:00[Asia/Shanghai] - Cookie=username,zhangsan # 请求中必须有 username = zhangsan 的 cookie,后面其实是个政策表达式
-
header 请求头判断
- id: flash-sale-promotion uri: lb://my-test-provider # 服务名代替 ip+port predicates: - Path=/onsale/** - Between=2024-07-13T00:00:00+08:00[Asia/Shanghai],2024-07-14T00:00:00+08:00[Asia/Shanghai] - Cookie=username,zhangsan - Header=userage,\d+ # 请求头必须有 userage,并且值是正整数
-
Path,前面用了很多了,就是通过 url 判断是否符合
-
Query,请求必须带有某个 QueryString 才可以(get 请求?xx=xx&xx=xx)
-
RemoteAddr,IP 限制,符合的 IP 才能访问
-
Method,请求方式限制,只能符合的才能访问,GET、POST、PUT ...
自定义判断规则
标签:00,uri,predicates,细节,使用,test,Path,my,gateway From: https://www.cnblogs.com/cyrushuang/p/18297230