2. Spring Cloud Gateway快速开始
    2.1 环境搭建
    1. 引入依赖

    1. <!-- gateway网关 -->
    2. <dependency>
    3. <groupId>org.springframework.cloud</groupId>
    4. <artifactId>spring-cloud-starter-gateway</artifactId>
    5. </dependency>

    注意:会和spring-webmvc的依赖冲突,需要排除spring-webmvc
    2.编写yml配置文件

    1. server:
    2. port: 8888
    3. spring:
    4. application:
    5. name: api-gateway
    6. cloud:
    7. gateway:
    8. routes: # 路由数组[路由 就是指定当请求满足什么条件的时候转到哪个微服务]
    9. - id: product_route # 当前路由的标识, 要求唯一
    10. uri: http://localhost:8081 # 请求要转发到的地址
    11. order: 1 # 路由的优先级,数字越小级别越高
    12. predicates: # 断言(就是路由转发要满足的条件)
    13. - Path=/product-serv/** # 当请求路径满足Path指定的规则时,才进行路由转发
    14. filters: # 过滤器,请求在传递过程中可以通过过滤器对其进行一定的修改
    15. - StripPrefix=1 # 转发之前去掉1层路径.

    集成Nacos
    现在在配置文件中写死了转发路径的地址, 前面我们已经分析过地址写死带来的问题, 接下来我们从注册中心获取此地址。
    1. 引入依赖

    1. <!-- nacos服务注册与发现 -->
    2. <dependency>
    3. <groupId>com.alibaba.cloud</groupId>
    4. <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    5. </dependency>

    编写yml配置文件

    1. server:
    2. port: 8888
    3. spring:
    4. application:
    5. name: api-gateway
    6. cloud:
    7. nacos:
    8. discovery:
    9. server-addr: 127.0.0.1:8848
    10. gateway:
    11. routes:
    12. - id: product_route
    13. uri: lb://service-product # lb指的是从nacos中按照名称获取微服务,并遵循负载均衡策略
    14. predicates:
    15. - Path=/product-serve/**
    16. filters:
    17. - StripPrefix=1

    简写去掉关于路由的配置,自动寻找服务

    1. server:
    2. port: 8888
    3. spring:
    4. application:
    5. name: api-gateway
    6. cloud:
    7. nacos:
    8. discovery:
    9. server-addr: 127.0.0.1:8848
    10. gateway:
    11. discovery:
    12. locator:
    13. enabled: true

    3)测试
    image.png
    这时候,就发现只要按照网关地址/微服务/接口的格式去访问,就可以得到成功响应。