gateway入门

依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!--    gateway    -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-sentinel-gateway</artifactId>
</dependency>

<!-- scope改test使该依赖仅在test文件夹下生效,从而优雅的去掉web依赖,十分优雅 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<scope>test</scope>
</dependency>

配置文件

繁文缛节

1
2
3
4
5
6
7
8
9
10
spring:
cloud:
gateway:
routes:
- id: config_route
uri: lb://config # 负载均衡nacos
predicates:
- Path=/config-server/** # 访问前缀
filters:
- StripPrefix=1 # 去掉访问前缀

简化了繁文缛节

1
2
3
4
5
6
spring:
cloud:
gateway:
discovery:
locator:
enabled: true # 服务名作为前缀

繁文缛节展开

predicates 不要加空格

  • - After=2023/02/17T13:02:01.666+8:00[Asia/Shanghai]
  • - Between=2023/02/17T13:02:01.666+8:00[Asia/Shanghai], 2023/02/18T13:02:01.666+8:00[Asia/Shanghai]
  • - Before=…..
  • - Header=X-Request-Id, \d+ // 支持正则
  • - Host=**.sdadgz.cn, **.s.cn
  • - Method=GET,POST
  • - Path=/config-server/{id}/**
  • - Query=green // url?green=1&red=2
  • - Query=green,red // url?green=red 支持正则
  • - Weight=group1, 8 // 分组组名,权重

自定义 我不想学,长大后再学习

  1. 创建 *RoutePredicateFactory 继承AbstractRoutePredicateFactory<CheckAuthRoutePredicateFactory.Config>
  2. @Component注解

跨域 我们的老朋友

1
2
3
4
5
6
7
8
9
10
11
12
13
spring:
cloud:
gateway:
globalcors:
cors-configurations:
'[/**]':
allowedOrigins: "*"
allowedMethods:
- GET
- POST
- PUT
- OPTION
- DELETE