Spring Cloud Alibaba的gateway网关主要包含三个主要概念:Route、Predicate、Filter,其中Route(路由)包括一个标识性的ID,一个目的地的URI,一个predicates(断言)的集合以及一个filters(过滤器)的集合。一个Route匹配的predicate为真,就能到达指定位置。Predicate是Java 8中的断言函数,用来匹配当次请求的任何信息,例如请求头或者请求参数。Predicate的主要作用是用来做判断用的,当判断成功后可以路由到指定位置。Filter的主要作用是对发送过来的请求进行过滤,过滤器可以对请求或者响应进行修改,在请求抵达目标之前以及请求完成响应之后都可以进行处理。
1.在微服务中添加gateway网关相关依赖,并且一定要开启Nacos的服务器
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!-- nacos作为服务注册发现 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- nacos作为配置中心来做配置管理 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2.创建application.properties文件,并进行配置
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
spring.application.name=gulimall-gateway
server.port=88
3.在Nacos添加gateway命令空间
4.创建bootstrap.properties文件进行配置
spring.application.name=gulimall-gateway
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
5.在网关的启动类上加上@EnableDiscoveryClient,开启服务的注册发现
6.创建application.yml进行网关测试
spring:
cloud:
gateway:
routes:
- id: test_route
uri: https://www.baidu.com
predicates:
- Query=url,baidu
- id: qq_route
uri: https://www.qq.com
predicates:
- Query=url,qq