作用:请求转发,负载均衡,权限控制,跨域

用来代替Zuul

简要概述

先通过Gateway Handler Mapping做匹配,然后根据Gateway Web Handler处理匹配

然后要经过很多过滤器

简单使用

依赖

这里使用nacos作为服务注册中心

  1. <!--服务注册-->
  2. <dependency>
  3. <groupId>com.alibaba.cloud</groupId>
  4. <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  5. </dependency>
  6. <!-- gateway依赖,该依赖中已经引入了web相关依赖了 -->
  7. <dependency>
  8. <groupId>org.springframework.cloud</groupId>
  9. <artifactId>spring-cloud-starter-gateway</artifactId>
  10. </dependency>
  11. <!--服务调用-->
  12. <dependency>
  13. <groupId>org.springframework.cloud</groupId>
  14. <artifactId>spring-cloud-starter-openfeign</artifactId>
  15. </dependency>

简单使用

spring:
  application:
    name: service-gateway
  cloud:
    # 网关服务注册到nacos中
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
    # 开启gateway服务发现路由
    gateway:
      discovery:
        locator:
          enabled: true
      route-refix: /api
      # 路由匹配规则
      routes:
        # 设置路由id
        - id: service-edu
          # 设置路由uri lb://nacos中注册的服务名
          uri: lb://${spring.cloud.gateway.routes[0].id}
          # 断言 路由规则 如果有多个可以加逗号分割
          predicates:
            - Path=${spring.cloud.gateway.route-refix}/eduservice/**
          filters:
          # 路由过滤在网关服务访问/api/eduservice相当于访问代理服务的/eduservice
            - StripPrefix=1

gateway过滤器有第二代网关的新写法
clipboard.png