Spring Cloud Gateway

一、SpringCloud Gateway 概述

  SpringCloudGateway是SpringCloud官方推出的第二代网关框架,取代Zuul网关。网关作为流量的,在微服务系统中有着非常作用,网关常见的功能有路由转发、权限校验、限流控制等作用。
  使用了一个RouteLocatorBuilder的bean去创建路由,除了创建路由RouteLocatorBuilder可以让你添加各种predicates和filters,predicates断言的意思,顾名思义就是根据具体的请求的规则,由具体的route去处理,filters是各种过滤器,用来对请求做各种判断和修改。

二、SpringCloud Gateway 案例

1、引入依赖

    <dependencies>
        <!-- 引入 Spring Cloud Gateway 相关依赖,使用它作为网关,并实现对其的自动配置 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
      </dependencies>     

2、网关路由配置

2.1新的gateway网关路由配置有两种方式:

  • 通过@Bean自定义RouteLocator配置
  • 在配置文件yml中配置

2.2自定义RouteLocator配置

@Configuration
public class GatewayConfiguration{

    RouteLocator routeLocator (@Autowired RouteLocatorBuilder builder){
        return  builder.routes()
                .route(" provider", j->j.path("/provider/**").uri("lb://Nacos-01-Provider"))
                .build();

       /* - id: provider
        uri: lb://Nacos-01-Provider
        predicates:
        - Path=/provider*//***/
    }
}

2.3配置文件yml配置

spring:
  cloud:
    gateway:
      routes:
        - id: wya  #一个路由(服务)的唯一标识
          uri: http://www.jp626.top/ #服务的地址
          predicates:           #过滤条件
            - Path=/index       
Predicate
spring cloud gateway 通过谓词(Predicate)来匹配来自用户的请求
1、After 通过时间匹配:
spring:
  cloud:
    gateway:
      routes:
        - id: wya  #一个路由(服务)的唯一标识
          uri: http://www.jp626.top/ #服务的地址
          predicates:
             - After=2021-09-01T01:01:01+08:00[Asia/Shanghai]
  表示,请求时间在 2021-09-01T01:01:01+08:00[Asia/Shanghai] 时间之后,才会被路由。 除了 After 之外,还有两
个关键字: Before.
2、Method 通过请求方式匹配:
spring:
  cloud:
    gateway:
      routes:
        - id: wya  #一个路由(服务)的唯一标识
          uri: http://www.jp626.top/ #服务的地址
          predicates:
              - Method=GET
   表示这个配置表示只给 GET 请求进行路由          

3、Path 通过请求路径匹配:(重点)
spring:
  cloud:
    gateway:
      routes:
        - id: wya  #一个路由(服务)的唯一标识
          uri: http://www.jp626.top/ #服务的地址
          predicates:           
            - Path=/index          
表示路径满足 index这个规则,都会被进行转发到http://www.jp626.top/index

4、Cookie 通过Cookie匹配
spring:
  cloud:
    gateway:
      routes:
        - id: wya  #一个路由(服务)的唯一标识
          uri: http://www.jp626.top/ #服务的地址
          predicates:           
             - Cookie=CookieName, .*jie.*      
 这里判断cookie的 CookieName是否包含"jie" 是的话就路由到对应的服务上去
5、Header 通过请求头匹配
 spring:
  cloud:
    gateway:
      routes:
        - id: wya  #一个路由(服务)的唯一标识
          uri: http://www.jp626.top/ #服务的地址
          predicates:  
             - Header=requestId
 表示请求头中一定要有 requestId 参数才会进行转发,否则不会进行转发。也可以指定参数和参数的值
 

三、运行测试

访问 http://localhost:7005/index,路由转发到 http://www.jp626.top/index

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值