1 加入nacos客户端依赖

        <!--nacos客户端-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

2 在主类上添加注解

添加注解启用nacos客户端:

package cn.jack;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableDiscoveryClient
public class GatewayApplication {
    public static void main(String[] args) {
        SpringApplication.run(GatewayApplication.class, args);
    }
}

3 修改配置文件

server:
  port: 7000
spring:
  application:
    name: api-gateway
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848   # nacos服务端地址
    gateway:
      discovery:
        locator:
          enabled: true # 启用探测器,让gateway可以发现nacos中的微服务
      routes: # 路由数组(路由:就是当指定请求满足什么条件的时候,转发到哪个微服务)
        - id: product_route  # 当前路由的标识,要求唯一。默认uuid
          uri: lb://service-product # lb指的是负载均衡(load balancing),service-product是nacos中微服务的名称
          order: 1  # 路由的优先级,数字越小级别越高
          predicates: # 断言(就是路由转发要满足的条件)
            - Path=/product-serv/** # 当请求路径满足Path指定的规则时,才进行路由转发
          filters:  # 过滤器,请求在传递过程中可以通过过滤器对其进行一定的修改
            - StripPrefix=1 # 转发之前去掉1层路径

4 测试

5 简写版

Gateway实现从nacos中获取服务信息后,其实提供了默认的路由实现,也就是说我们可以不用配置路由。配置文件可以修改如下:

server:
  port: 7000
spring:
  application:
    name: api-gateway
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848   # nacos服务端地址
    gateway:
      discovery:
        locator:
          enabled: true # 启用探测器,让gateway可以发现nacos中的微服务
      

再次运行测试,既然是默认实现的路由,那么访问地址就需要遵循定义的规范。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐