1. spring-cloud-gateway工作原理

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

官方文档

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值