使用Gateway的流式api修改请求路径

在官网看到这样的写法

spring:
  cloud:
    gateway:
      routes:
      - id: nameRoot
        uri: https://nameservice
        predicates:
        - Path=/name/**
        filters:
        - StripPrefix=2

当网关转发请求路径为 /name/blue/red时,实际上是向nameservice转发的nameservice/red请求,官网中并没有给出流式api的栗子

可以使用下面的代码来实现

    @Bean
    public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {


        return builder.routes()
                .route("oauth",
                        f-> f.path("/oauth/**")
                                .filters(gatewayFilterSpec -> gatewayFilterSpec.rewritePath("/oauth",""))
                                .uri("lb://oauth")
                ).build();

    }

但是还是有问题,如果将官网的改成用流式api来写的话,你怎么知道name的后面一定是blue呢就像下面这样

    @Bean
    public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {


        return builder.routes()
                .route("nameRoot",
                        f-> f.path("/name/**")
                        //问题在这里
                                .filters(gatewayFilterSpec -> gatewayFilterSpec.rewritePath("/name/blue",""))
                                .uri("lb://nameservice")
                ).build();

    }

希望

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java精灵儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值