除了路由的 ID 和目标 URI 之外,Spring Cloud Gateway 还支持多种其他的路由配置选项。下面我们将逐一介绍这些选项。
predicates 部分定义了路由匹配规则。Spring Cloud Gateway 支持多种不同的匹配规则,可以根据请求的路径、Host、Method、Header、Cookie 等信息来进行路由匹配。
以下是常见的路由匹配规则:
predicates 部分可以包含多个匹配规则,它们之间是与的关系。例如,下面的配置表示只有当请求的路径以 /api 开头,同时包含参数名为 foo,且参数值为 bar 时,路由规则才会匹配成功:
spring:
cloud:
gateway:
routes:
- id: my-route
uri: http://localhost:8080
predicates:
- Path=/api/**
- Query=foo=bar
filters 部分定义了路由过滤器。路由过滤器是 Spring Cloud Gateway 中非常重要的一部分,它可以用于修改请求和响应、添加头信息、限流等。Spring Cloud Gateway 内置了多个过滤器,同时也支持自定义过滤器。
以下是常见的路由过滤器:
filters 部分可以包含多个过滤器,它们之间是顺序执行的。例如,下面的配置表示先添加一个请求头信息 X-Request-Id,然后再将请求路径重写为 /api:
spring:
cloud:
gateway:
routes:
- id: my-route
uri: http://localhost:8080
predicates:
- Path=/old-api/**
filters:
- AddRequestHeader=X-Request-Id,123
- RewritePath=/old-api/(?<path>.*),/api/${path}
在上述配置中,首先会添加一个请求头信息 X-Request-Id,值为 123;然后将请求路径重写为 /api/{path},其中 {path} 是一个路径变量,它会被替换为原始请求路径中的内容。
order 属性用于定义路由规则的优先级。如果没有指定 order 属性,路由规则的优先级将按照它们在配置文件中出现的顺序来确定。如果指定了 order 属性,优先级将按照它的值来确定,数值越小的路由规则优先级越高。
例如,下面的配置中,路由规则 /service1/** 的优先级高于 /service2/**:
spring:
cloud:
gateway:
routes:
- id: service2
uri: http://localhost:8082
predicates:
- Path=/service2/**
- id: service1
uri: http://localhost:8081
predicates:
- Path=/service1/**
order: 0
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。