美文网首页
SpringCloud系列之网关gateway-6.Path 断

SpringCloud系列之网关gateway-6.Path 断

作者: 那钱有着落吗 | 来源:发表于2021-09-14 09:39 被阅读0次

    我们使用两种方式来配置Path断言,一种是yml配置文件,一种是通过java类的方式配置:

    YML方式配置

    StripPrefix 的意思是比如 比如gateway的地址是:localhost:6500/yml/** 如果StripPrefix配置的是1,就会在localhost:6500后面的第一个 yml给去掉,同时把localhost:6500给替换为feign-client

    spring:
      cloud:
        gateway:
          routes:
            - id: feignclient
              uri: lb://feign-client
              predicates:
                - Path=/yml/**
              filters:
                  - StripPrefix=1
    
    

    java类的方式配置

    package com.example.gatewaysample;
    
    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;
    import org.springframework.core.annotation.Order;
    import org.springframework.http.HttpMethod;
    
    @Configuration
    public class GatewayConfiguration {
    
        @Bean
        @Order
        public RouteLocator customizedRoutes(RouteLocatorBuilder routeLocatorBuilder){
            return routeLocatorBuilder.routes()
                    .route(r->r.path("/java/**")
                            .and().method(HttpMethod.GET)
                            .and().header("name")
                            .filters(f->f.stripPrefix(1)
                                    .addResponseHeader("java-param","gateway-config")
                            )
                            .uri("lb://feign-client")
                    )
                    .route(r->r.path("/wang/**")
                            .and().method(HttpMethod.GET)
                            .filters(f->f.stripPrefix(1)
                            )
                            .uri("lb://feign-client")
                    )
                    .build();
        }
    }
    

    两种方式都可以配置,都可以生效,下面是测试截图:

    下面是actuator展示的gateway的所有路由,可以看到通过java类生成的路由和配置文件生成的路由展示方式不一样,java类的展示方式会把java类的tostring给展示出来。


    image.png image.png

    最终测试路由规则:


    image.png

    当然如果你测试的是java这条路由,就需要在发送请求的时候在header里面添加一个叫做name的参数信息。

    相关文章

      网友评论

          本文标题:SpringCloud系列之网关gateway-6.Path 断

          本文链接:https://www.haomeiwen.com/subject/ncyfgltx.html