小滴课堂-学习笔记:(12)【进阶篇】网关Gateway架构+断言+过滤器进阶实战

56 篇文章 0 订阅
32 篇文章 1 订阅

logo 愿景:"让编程不再难学,让技术与生活更加有趣"


更多架构课程请访问 xdclass.net

目录

第1集 进阶掌握 SpringCloud Gateway配置和交互流程

第2集 微服务SpringCloud Gateway内置路由断言讲解

第3集 Gateway内置断言实现接口定时下线实战

第4集 玩转SpringCloud Gateway过滤器

第5集 【高级篇】案例实战之网关Gateway全局过滤器实现用户鉴权

干货文档


 

第1集 进阶掌握 SpringCloud Gateway配置和交互流程

简介:讲解SpringCloud Gateway架构流程

  • 网关的配置项回顾

    • 路由:是网关的基本单元,由ID、URI、一组Predicate、一组Filter组成,根据Predicate进行匹配转发
    
    
    
    route组成部分
    id:路由的ID
    uri:匹配路由的转发地址
    predicates:配置该路由的断言,通过PredicateDefinition类进行接收配置。
    order:路由的优先级,数字越小,优先级越高。
    

     

  • 交互流程

    • 客户端向Spring Cloud Gateway发出请求
    • 如果网关处理程序映射确定请求与路由匹配
    • 则将其发送到网关Web处理程序
    • 通过特定过滤器链运行,前置处理-后置处理

    Spring Cloud网关图

 

第2集 微服务SpringCloud Gateway内置路由断言讲解

简介:讲解Gateway内置的路由断言

  • 什么是Gateway路由断言

    • Predicate 来源于Java8,接受输入参数,返回一个布尔值结果
    • Spring Cloud Gateway 中 Spring 利用 Predicate 的特性实现了各种路由匹配规则
    • 转发的判断条件,SpringCloud Gateway支持多种方式,常见如:Path、Query、Method、Header等
    • 支持多个Predicate请求的转发是必须满足所有的Predicate后才可以进行路由转发

 

  • 内置路由断言介绍 RoutePredicateFactory 接口实现类

    image-20200910144246781

  • 参数编写规则 XXXRoutePredicateFactory,使用XXX作为参数配置, 例如下面

    
    
    
    predicates:
      - Host=
      - Path=
      - Method=
      - Header=
      - Query=
      - Cookie=
    
    

     

第3集 Gateway内置断言实现接口定时下线实战

简介:Gateway内置的路由接口定时下线实战

  • 需求:接口需要在指定时间进行下线,过后不可以在被访问

    • 使用Before ,只要当前时间小于设定时间,路由才会匹配请求
    • 东8区的2020-09-11T01:01:01.000+08:00后,请求不可访问
    • 为了方便测试,修改时间即可



predicates:
  - Before=2020-09-09T01:01:01.000+08:00


第4集 玩转SpringCloud Gateway过滤器

简介:讲解Gateway过滤器

  • 什么是网关的过滤器

Spring Cloud网关图

  • 过滤器生命周期

    • PRE: 这种过滤器在请求被路由之前调用,一般用于鉴权、限流等
    • POST:这种过滤器在路由到微服务以后执行,一般用于修改响应结果,比如增加header信息、打点结果日志

     

  • 网关过滤器分类

    • 局部过滤器GatewayFilter:应用在某个路由上,每个过滤器工厂都对应一个实现类,并且这些类的名称必须以 GatewayFilterFactory 结尾
    • 全局过滤器:作用全部路由上,
  • 内置很多局部过滤器,顶级接口 GatewayFilterFactory,

image-20200910151857760

  • 内置很多全局过滤器,顶级接口 GlobalFilter

image-20200910152346987

 

 

 

第5集 【高级篇】案例实战之网关Gateway全局过滤器实现用户鉴权

简介:讲解Gateway全局过滤器实现用户鉴权

  • 业务流程

    image-20200910152839565

  • 自定义全局过滤器实现鉴权




@Component
public class UserGlobalFilter implements GlobalFilter,Ordered {
    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
​
        String token = exchange.getRequest().getHeaders().getFirst("token");
​
        System.out.println(token);
        if(StringUtils.isBlank(token)){
            exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);
            return exchange.getResponse().setComplete();
        }
​
        //继续往下执行
        return chain.filter(exchange);
​
    }
​
    //数字越小,优先级越高
    @Override
    public int getOrder() {
        return 0;
    }
}
​

 

 

 

干货文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dev666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值