After路由谓词工厂
server:
port: 10010
spring:
application:
name: gateway-service
cloud:
gateway:
routes:
- id: consumer
uri: lb://consumer-service
predicates:
- After=2023-07-15T03:05:00.789-07:00[America/Denver]
#http://localhost:10010/hello
所有经过gateway-service路由的请求,在 2023-07-15T03:05:00.789-07:00[America/Denver] 后才能允许被访问。
Before路由谓词工厂和Between路由谓词工厂与上述例子差别不大,一个是在指定时间前可以访问,一个是在指定时间范围内可访问,不一一列举。
官方列举的例子:
Before Example
Between Example
Cookie 路由谓词工厂
发送请求需要带有指定Cookie名称和相匹配的值
以下举例: Cookie名称=name,相匹配的值=LZJ
predicates:
- Cookie=name,LZJ
不匹配无法通过
Header 路由谓词工厂
输入一个或多个和数字。
predicates:
- Header=X-Request-Id, \d+
Host 路由谓词工厂
跟前面一样我们要配置一下主机域名 例Host = 主机1,主机2,......
predicates:
- Host=**.wnhz.com
错误示范:
正确输入域名后:
Method 路由谓词工厂
指定请求方式
predicates:
- Method=GET,POST
使用PUT方法请求失败:
改为POST请求后成功
Path路由谓词工厂
添加指定路径后可以访问;此处需要注意的是添加的路径在解析成真正的路径后还存在,
例如 http://localhost:10010/hello 是解析前的接口路径,由网关实际解析后的路径为
http://localhost:10002/hello,假如我添加了/consumer/**路径,那么解析后的路径即为http://localhost:10002/consumer/hello,这样并不会访问到正确的请求路径,所以需要和filters联用
Query路由谓词工厂
基于请求的参数接收请求
server:
port: 10010
spring:
application:
name: gateway-service
cloud:
gateway:
routes:
- id: consumer
uri: lb://consumer-service
predicates:
- Query=name,LZJ
RemoteAddr 路由谓词工厂
server:
port: 10010
spring:
application:
name: gateway-service
cloud:
gateway:
routes:
- id: consumer
uri: lb://consumer-service
predicates:
- RemoteAddr=192.168.192.1/24
Weight 路由谓词工厂
根据分配的权重决定同一分组路由的访问量,9090端口占八成,10001端口占两成
server:
port: 10010
spring:
application:
name: gateway-service
cloud:
gateway:
routes:
- id: consumer-high
uri: http://localhost:9090
predicates:
- Weight=group1, 8
- id: consumer-low
uri: http://localhost:10001
predicates:
- Weight=group1, 2