【Spring Cloud Gateway】路由配置uri三种方式及区别
在Spring Cloud Gateway中,可以通过多种方式配置路由的uri。
- 硬编码URI: 在配置文件(如application.yml)中直接指定uri。
spring:
cloud:
gateway:
routes:
- id: after_route
uri: https://example.org
predicates:
- Path=/foo
- 通过SpEL表达式动态设置URI: 使用SpEL表达式从请求的头部或参数中提取uri。
spring:
cloud:
gateway:
routes:
- id: host_route
uri: ${host.uri}
predicates:
- Host: {regexp: .*}
在这个例子中,${host.uri}
将会被解析为环境变量或者配置属性中的值。
- 通过Filter动态设置URI: 使用Gateway Filter Factory创建的Filter可以在请求时动态修改路由的uri。
@Bean
public GatewayFilter modifyRequestUriGatewayFilter() {
return (exchange, chain) -> {
ServerHttpRequest request = exchange.getRequest().mutate()
.uri(new URI("https://example.org"))
.build();
return chain.filter(exchange.mutate().request(request).build());
};
}
在这个例子中,我们创建了一个Gateway Filter,它会在请求被路由前修改请求的uri。
这三种方式的主要区别在于uri的设定方式和设定时间点不同:硬编码的uri是静态的,在配置时就已经确定;SpEL表达式和Gateway Filter可以根据请求内容动态地设置uri。
评论已关闭