第十二章:SpringCloud组件-gateway网关中心
1:创建网关服务
onlinemall-geteway


2:修改pom.xml
springboot版本修改为:2.1.8.RELEASE
springcloud版本修改为:Greenwich.SR3
引入公共项目的依赖(要注册到nacos中心)
<!--引入公共项目依赖 排除mybatis依赖,要不启动会报错-->
<dependency>
<groupId>com.applesnt.onlinemall</groupId>
<artifactId>onlinemall-common</artifactId>
<version>0.0.1-SNAPSHOT</version>
<exclusions>
<exclusion>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</exclusion>
</exclusions>
</dependency>
3:把onlinmall-gateway项目聚合到onlinemall
修改onlinemall的pom.xml,增加:
<module>onlinemall-gateway</module>
4:onlinemall-gateway增加配置文件,并增加相关配置信息
在resources目录下创建application.yml
#服务端口
server:
port: 88
#应用服务名称
spring:
application:
name: onlinemall-gateway
#注册中心地址
cloud:
nacos:
discovery:
server-addr: 116.196.121.63:8848
#配置网关路由
gateway:
routes:
- id: testroute
uri: https://www.baidu.com
predicates:
- Method=GET
filters:
- AddRequestHeader=X-Request-Foo, Bar
5:开启注册服务(把服务注册到nacos)
在启动类OnlinemallGatewayApplication增加注解
package com.applesnt.onlinemall.gateway;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
/*把服务注册到nacos*/
@EnableDiscoveryClient
@SpringBootApplication
public class OnlinemallGatewayApplication {
public static void main(String[] args) {
SpringApplication.run(OnlinemallGatewayApplication.class, args);
}
}
6:启动测试

7:启动测试

8:Predicate:断言类型说明
1、指定时间之后执行
gateway:
routes:
- id: gateway-service
uri: https://www.baidu.com
order: 0
predicates:
- After=2019-01-01T00:00:00+08:00[Asia/Shanghai]
2、指定时间之前执行
gateway:
routes:
- id: gateway-service
uri: https://www.baidu.com
order: 0
predicates:
- Before=2019-01-01T00:00:00+08:00[Asia/Shanghai]
3、指定时间区间内执行
gateway:
routes:
- id: gateway-service
uri: https://www.baidu.com
order: 0
predicates:
- Between=2019-01-01T00:00:00+08:00[Asia/Shanghai], 2019-07-01T00:00:00+08:00[Asia/Shanghai]
4、指定时间区间内执行
gateway:
routes:
- id: gateway-service
uri: https://www.baidu.com
order: 0
predicates:
- Cookie=sessionId, test
5、指定cookies的key和value
gateway:
routes:
- id: testroute
uri: https://www.baidu.com
predicates:
- Cookie=key,value
filters:
- AddRequestHeader=X-Request-Foo, Bar
6、通过 Host 匹配
gateway:
routes:
- id: testroute
uri: https://www.baidu.com
predicates:
- Host=**.baidu.com
filters:
- AddRequestHeader=X-Request-Foo, Bar
6、通过请求方式匹配
gateway:
routes:
- id: testroute
uri: https://www.baidu.com
predicates:
- Method=GET
filters:
- AddRequestHeader=X-Request-Foo, Bar
7、通过路径匹配(http://localhost:88/foo/xx)
gateway:
routes:
- id: testroute
uri: https://www.baidu.com
predicates:
- Path=/foo/{segment}
filters:
- AddRequestHeader=X-Request-Foo, Bar
8、通过参数匹配(localhost:8080?smile=x&id=2,只要有这参数即可匹配)
gateway:
routes:
- id: testroute
uri: https://www.baidu.com
predicates:
- Query=smile
filters:
- AddRequestHeader=X-Request-Foo, Bar
9、通过参数匹配(localhost:8080?keep=pu,key和value必须匹配成功)
gateway:
routes:
- id: testroute
uri: https://www.baidu.com
predicates:
- Query=keep, pu.
filters:
- AddRequestHeader=X-Request-Foo, Bar
9、通过ip匹配
gateway:
routes:
- id: testroute
uri: https://www.baidu.com
predicates:
- RemoteAddr=192.168.1.1/24
filters:
- AddRequestHeader=X-Request-Foo, Bar
10、组合匹配(必须同时满足所有条件)
gateway:
routes:
- id: testroute
uri: https://www.baidu.com
predicates:
- Host=**.foo.org
- Path=/headers
- Method=GET
- Header=X-Request-Id, \d+
- Query=foo, ba.
- Query=baz
- Cookie=chocolate, ch.p
- After=2018-01-20T06:06:06+08:00[Asia/Shanghai]
filters:
- AddRequestHeader=X-Request-Foo, Bar

浙公网安备 33010602011771号