Spring Cloud Gateway网关之两种路由配置方式

API网关
01 Spring Cloud Gateway网关之快速上手
02 Spring Cloud Gateway网关之两种路由配置方式
03 Spring Cloud Gateway网关之跨域支持
04 Spring Cloud Gateway网关之自定义全局过滤器
05 Spring Cloud Gateway网关之自定义路由过滤器
06 Spring Cloud Gateway网关之自定义路由谓词工厂
07 Spring Cloud Gateway网关之超时时间配置
08 Spring Cloud Gateway网关之配置说明
09 Zuul网关之快速上手
10 Zuul网关之路由配置
11 Zuul网关之跨域支持
12 Zuul网关之自定义过滤器
13 Zuul网关之超时时间配置

一 两种路由配置方式

1 方法一:通过配置文件配置,在resources/application.yaml中配置

具体的配置方法如下:

1
2
3
4
5
6
7
8
9
10
11
spring:
cloud:
gateway:
routes:
# 某业务服务
- id: business-server # 路由唯一标识 不允许重复
uri: http://localhost:9999 # uri可以是http 也可以是 eureka的服务地址
predicates:
- Path=/business/** # 路由的前缀 这里一般只配置一个
filters: # 过滤器 内置了不少通用的过滤器 如以下的重写path的过滤器
- RewritePath=/business(?<segment>.*), /api$\{segment}

2 方法二:通过api方式配置路由

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package com.qicoder.gateway;

import org.springframework.cloud.gateway.route.RouteLocator;
import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class GatewayConfig {
@Bean
public RouteLocator routes(RouteLocatorBuilder builder) {
return builder.routes()
.route("business-server", r -> r.path("/business/**")
.filters(f -> f.rewritePath("/business(?<segment>.*)", "/api${segment}"))
.uri("http://localhost:9999"))
.build();
}
}

通过以上两种方式,都可以使路由生效。

但是在实际生产实践中,我们一般很少通过操作api来配置路由。

我们一般是通过配置的方式来配置路由,好处是更加灵活,调整路由不需要改动代码,修改配置即可。

但以上结论也并非绝对,针对一些大公司,路由可能非常复杂,并且路由规则是在外部存储中保存的,便于做后台管理界面去管理这些路由,针对这种情况,还是会通过api的方式来配置路由。