Spring Cloud GateWay 帮我们内置了很多 Predicates功能,实现了各种路由匹配规
则(通过 Header、请求参数等作为条件)匹配到对应的路由
1 时间点后匹配
server:
port: 8888
spring:
application:
name: gateway-service
cloud:
nacos:
discovery:
server-addr: localhost:8848
gateway:
discovery:
locator:
enabled: true
routes:
- id: consumer
uri: https://consumer-service
predicates:
- After=2023-03-18T17:42:47.789-07:00[America/Denver]
2 时间点前匹配
server:
port: 8888
spring:
application:
name: gateway-service
cloud:
nacos:
discovery:
server-addr: localhost:8848
gateway:
discovery:
locator:
enabled: true
routes:
- id: consumer
uri: https://consumer-service
predicates:
- Before=2025-03-18T17:42:47.789+08:00[Asia/Shanghai]
3 时间区间匹配
server:
port: 8888
spring:
application:
name: gateway-service
cloud:
nacos:
discovery:
server-addr: localhost:8848
gateway:
discovery:
locator:
enabled: true
routes:
- id: consumer
uri: https://consumer-service
predicates:
- Between=2022-03-18T17:42:47.789+08:00[Asia/Shanghai],2025-03-18T17:42:47.789+08:00[Asia/Shanghai]
4 指定Cookie正则匹配指定值
server:
port: 8888
spring:
application:
name: gateway-service
cloud:
nacos:
discovery:
server-addr: localhost:8848
gateway:
discovery:
locator:
enabled: true
routes:
- id: consumer
uri: https://consumer-service
predicates:
- Cookie=sessionId, \d+
5 指定Header正则匹配指定值
server:
port: 8888
spring:
application:
name: gateway-service
cloud:
nacos:
discovery:
server-addr: localhost:8848
gateway:
discovery:
locator:
enabled: true
routes:
- id: consumer
uri: https://consumer-service
predicates:
- Header=requestinfo, \d+
6 请求Host匹配指定值
server:
port: 8888
spring:
application:
name: gateway-service
cloud:
nacos:
discovery:
server-addr: localhost:8848
gateway:
discovery:
locator:
enabled: true
routes:
- id: consumer
uri: https://consumer-service
predicates:
- Host=**.consumer-service.**
7 请求Method匹配指定请求方式
server:
port: 8888
spring:
application:
name: gateway-service
cloud:
nacos:
discovery:
server-addr: localhost:8848
gateway:
discovery:
locator:
enabled: true
routes:
- id: consumer
uri: https://consumer-service
predicates:
- Method=GET,POST
8 请求路径正则匹配
server:
port: 8888
spring:
application:
name: gateway-service
cloud:
nacos:
discovery:
server-addr: localhost:8848
gateway:
discovery:
locator:
enabled: true
routes:
- id: consumer
uri: https://consumer-service
predicates:
- Path=/consumer-service/**
9 请求包含某参数
server:
port: 8888
spring:
application:
name: gateway-service
cloud:
nacos:
discovery:
server-addr: localhost:8848
gateway:
discovery:
locator:
enabled: true
routes:
- id: consumer
uri: https://consumer-service
predicates:
- Query=name
10 远程地址匹配
server:
port: 8888
spring:
application:
name: gateway-service
cloud:
nacos:
discovery:
server-addr: localhost:8848
gateway:
discovery:
locator:
enabled: true
routes:
- id: consumer
uri: https://consumer-service
predicates:
- RemoteAddr=192.168.201.116