Gateway的RoutePredicateFactories练习

1.Gateway网关

*springCloud官方gateway文档:*https://docs.spring.io/spring-cloud-gateway/docs/3.0.8/reference/html/#the-setstatus-gatewayfilter-factory

SpringCloud Gateway是Spring Cloud的一个全新项目,基于Spring 5.0+Spring Boot 2.0和Project Reactor等技术开发的网关,它旨在为微服务架构提供—种简单有效的统一的API路由管理方式。SpringCloud Gateway是基于WebFlux框架实现的,而WebFlux框架底层则使用了高性能的Reactor模式通信框架Netty。

Spring Cloud Gateway的目标提供统一的路由方式且基于 Filter链的方式提供了网关基本的功能,例如:安全,监控/指标,和限流。

Route(路由) - 路由是构建网关的基本模块,它由ID,目标URI,一系列的断言和过滤器组成,如断言为true则匹配该路由;

Predicate(断言) - 参考的是Java8的java.util.function.Predicate,开发人员可以匹配HTTP请求中的所有内容(例如请求头或请求参数),如果请求与断言相匹配则进行路由;

Filter(过滤) - 指的是Spring框架中GatewayFilter的实例,使用过滤器,可以在请求被路由前或者之后对请求进行修改。

新建GatewayServer模块

访问网关(默认网关地址/服务名/接口)

Route Predicate Factories & GatewayFilter Factories

The Path Route Predicate Factory
server:
  port: 10010

spring:
  application:
    name: gateway-service
  # 服务发现
  cloud:
    gateway:
      routes:
        - id: consumer
          uri: lb://producer-consumer
          predicates:
            - Path=/consumer/**
          filters:
            - StripPrefix=1

        #每个规则配置一个过滤器
        - id: producer
          # 需要注意的是uri的协议为lb,表示启用Gateway的负载均衡功能。lb://serviceName是spring cloud gateway在微服务中自动为我们创建的负载均衡uri。
          uri: lb://producer-service
          predicates:
            - Path=/producer/**
          filters:
            - StripPrefix=1

The After/Before/Between Route Predicate Factory
spring:
  application:
    name: gateway-service
  # 服务发现
  cloud:
    gateway:
      routes:
        - id: consumer
          uri: lb://producer-consumer
          predicates:
            - After=2023-07-14T21:24:47.789+08:00[Asia/Shanghai]  #此时间之后可以访问
            

spring:
  application:
    name: gateway-service
  # 服务发现
  cloud:
    gateway:
      routes:
        - id: consumer
          uri: lb://producer-consumer
          predicates:
            - Between=2023-07-12T21:24:47.789+08:00[Asia/Shanghai], 2023-07-14T21:24:47.789+08:00[Asia/Shanghai] #此时间之间可以访问
The Cookie Route Predicate Factory
    gateway:
      routes:
        - id: consumer
          uri: lb://producer-consumer
          predicates:
            - Cookie=kong, goku    #设置有此cookie才能访问
The Header Route Predicate Factory
  gateway:
      routes:
        - id: consumer
          uri: lb://producer-consumer
          predicates:
            - Header=token, 888   #设置有此token才能访问
The Host Route Predicate Factory
   gateway:
      routes:
        - id: consumer
          uri: lb://producer-consumer
          predicates:
            - Host=**.lgl.com
The Method Route Predicate Factory
 gateway:
      routes:
        - id: consumer
          uri: lb://producer-consumer
          predicates:
            - Method=POST
The Query Route Predicate Factory
    gateway:
      routes:
        - id: consumer
          uri: lb://producer-consumer
          predicates:
            - Query=green  #设置请求里必须携带的参数
The RemoteAddr Route Predicate Factory
    gateway:
      routes:
        - id: consumer
          uri: lb://producer-consumer
          predicates:
            - RemoteAddr=192.168.200.1/24  #设置同一局域网才能访问
The Weight Route Predicate Factory
   gateway:
     routes:
      - id: weight_high
        uri: https://weighthigh.org
        predicates:
        - Weight=group1, 8
      - id: weight_low
        uri: https://weightlow.org
        predicates:
        - Weight=group1, 2            #设置权重,分配访问的频率
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值