博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring cloud gateway的stripPrefix配置
阅读量:6985 次
发布时间:2019-06-27

本文共 2201 字,大约阅读时间需要 7 分钟。

本文主要研究下spring cloud gateway的stripPrefix配置

使用zuul的配置

zuul:  routes:    demo:      sensitiveHeaders: Access-Control-Allow-Origin,Access-Control-Allow-Methods          path: /demo/**      stripPrefix: true      url: http://demo.com.cn/
这里的stripPrefix默认为true,也就是所有/demo/xxxx的请求转发给 ,去除掉demo前缀

使用spring cloud gateway的配置

spring:  cloud:    gateway:      default-filters:      - AddResponseHeader=X-Response-Default-Foo, Default-Bar      routes:      - id: demo        uri: http://demo.com.cn:80        order: 8999 ## 越小越优先        predicates:         - Path=/demo/**        filters:        - RewritePath=/demo/(?
.*), /$\{segment}
spring cloud gateway貌似没有现成的stripPrefix的配置,不过可以通过rewritepath来实现

spring-cloud-gateway-core-2.0.0.M6-sources.jar!/org/springframework/cloud/gateway/filter/factory/RewritePathGatewayFilterFactory.java

public class RewritePathGatewayFilterFactory implements GatewayFilterFactory {    public static final String REGEXP_KEY = "regexp";    public static final String REPLACEMENT_KEY = "replacement";    @Override    public List
argNames() { return Arrays.asList(REGEXP_KEY, REPLACEMENT_KEY); } @Override public GatewayFilter apply(Tuple args) { final String regex = args.getString(REGEXP_KEY); String replacement = args.getString(REPLACEMENT_KEY).replace("$\\", "$"); return apply(regex, replacement); } public GatewayFilter apply(String regex, String replacement) { return (exchange, chain) -> { ServerHttpRequest req = exchange.getRequest(); addOriginalRequestUrl(exchange, req.getURI()); String path = req.getURI().getPath(); String newPath = path.replaceAll(regex, replacement); ServerHttpRequest request = mutate(req) .path(newPath) .build(); exchange.getAttributes().put(GATEWAY_REQUEST_URL_ATTR, request.getURI()); return chain.filter(exchange.mutate().request(request).build()); }; }}
主要是这段String newPath = path.replaceAll(regex, replacement),这里相当于regex是/demo/(?<segment>.*),replacement是/${segment}

小结

spring cloud gateway利用RewritePath可以实现原来的zuul的stripPrefix的效果,而且功能更强大。

doc

转载地址:http://tltpl.baihongyu.com/

你可能感兴趣的文章
Windows与Linux系统拷贝文件之pscp的使用
查看>>
_xmlXPathNewContext", referenced from
查看>>
Netty3之ServerBootstrap分析
查看>>
小木木的Python学习笔记
查看>>
用SQL语句添加删除修改字段
查看>>
运维少年系列 python and cisco (1)
查看>>
c#时间转换
查看>>
调度器Quartz的简述与使用总结
查看>>
smokeping 安装
查看>>
Linux下安装oracle数据库步骤
查看>>
yum 不小心删除后安装
查看>>
vim 使用
查看>>
为敏感信息设置安全屏障
查看>>
mysql fabric安装使用测试
查看>>
java 对 mongoDB 分组统计操作 以及一些常用操作
查看>>
当你扛不住的时候就读读
查看>>
解决安装rrdtool遇到的一个问题
查看>>
linux启动过程
查看>>
我的友情链接
查看>>
我的友情链接
查看>>