1. spring-cloud-gateway工作原理
本篇文章介绍了spring-cloud-gateway的工作原理,内置断言、过滤器,yaml配置文件示例及文件读取方法等。
·
1. gateway工作流程
Spring-cloud-gateway(以下简称gateway)的工作原理如下图所示,客户端请求网关时,首先经过Gateway Handler Mapping组件,Handler Mapping组件负责验证请求的路径是否与路由的配置匹配,之后经过Gateway Web Handler组件,它负责读取为特定路由配置的过滤器,然后将请求传递给过滤器进行处理。
2. gateway配置文件及说明
gateway可以通过配置文件来对路由进行过滤和处理,配置文件的示例如下所示
gateway可以通过配置文件来对路由进行过滤和处理,配置文件的示例如下所示
spring:
cloud:
gateway:
routes:
- id: query_route
uri: https://example.org
predicates:
- Query=green
filters:
- AddRequestHeader=X-Request-red, blue
id:路由的唯一标识
uri:当客户端访问路径匹配url时,映射到指定路由上
predicates:断言集合,断言是java8里的概念,每个断言返回一个boolean值,当所有的断言均为true时才会真正的执行路由
filters:是过滤器集合,用来修改请求和响应信息
为了方便使用gateway提供了很多内置的断言和过滤器,分别说明如下
3. gateway内置的断言
4. gateway内置过滤器
5.网关配置读取
网关配置读取的代码在GatewayProperties里,截取主要代码片段如下所示
@ConfigurationProperties(GatewayProperties.PREFIX)
@Validated
public class GatewayProperties {
/**
* Properties prefix.
*/
public static final String PREFIX = "spring.cloud.gateway";
private final Log logger = LogFactory.getLog(getClass());
/**
* List of Routes.
*/
@NotNull
@Valid
private List<RouteDefinition> routes = new ArrayList<>();
RouteDefinition定义如下所示
@Validated
public class RouteDefinition {
private String id;
@NotEmpty
@Valid
private List<PredicateDefinition> predicates = new ArrayList<>();
@Valid
private List<FilterDefinition> filters = new ArrayList<>();
@NotNull
private URI uri;
private Map<String, Object> metadata = new HashMap<>();
private int order = 0;
6. 参考
更多推荐
已为社区贡献2条内容
所有评论(0)