跟着大佬们的文章,想玩一下gateway api网关。经过一系列ctrl+c和ctrl+v的操作,项目的基本就搭建好了;

1.引入依赖 pom.xml

<!--网关依赖-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!--不要引入web!不要引入web!不要引入web!gateway中已经包含-->

2.创建启动类

//如果有注册机(nacos,eureka)什么的可以不用引入
//@EnableDiscoveryClient,只需在配置文件里面配置好就行
@SpringBootApplication
public class GatewayServer {
    public static void main(String[] args) {
        SpringApplication.run(GatewayServer.class,args);
    }
}
2.配置文件
server:
    port: 9999                    #服务端口

spring:
    application:
        name: gateway      #服务名称
    cloud:
        ############# nacos配置中心 start (没有注册机可以不用配置这一块) #############
        nacos:
            # nacos配置中心    #nacos的配置文件名称(Data Id)叫 服务名称.yml ,
            # 组名(Group)
            config:
                server-addr: http://nacos服务器
                file-extension: yml
                namespace: xxx #命名空间(md5)
                group: 分组名    #分组
            #发现配置
            discovery:
                server-addr: http://www.lang9725.fun/find/
                namespace:  xxx #命名空间(md5)
                group: batw
        ############# nacos配置中心 end #############

        ############## 网关配置 start ##############
        gateway:
            #开启网关,和很多地方说不一样,很多地方都是这个是默认开启的,
            #但设置的话网关功能将无效
            enabled: true
            routes:
                - id: server_finance        #id 唯一即可
                  uri: http://localhost:44444  #用转发路径
                  predicates:
                      - Path=/test/test/**     # **表示转发地址下的全部都可以通过 
        ############## 网关配置 end ##############
这里要一个被转发服务器地址: http://localhost:44444/test/test/任意地址 并保证这个地址没问题,我们的测试网关地址:http://localhost:9999/test/test/任意地址,保证两个地址的返回效果一致(负载均衡效果到达预期)

前期没有配置spieng.cloud.gateway.enabled=true,测试网关一直到报404,看了很多大佬debug,不明所以,最后发现是这边配置没有加,而是配置一个spieng.cloud.gateway.discovery.locator.enabled=true,后面加了spieng.cloud.gateway.enabled=true就可以了,这个东西应该是和版本,和依赖包一定联系吧。

Logo

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

更多推荐