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. 参考

官方文档

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐