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

2021-09-14  本文已影响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的参数信息。

上一篇下一篇

猜你喜欢

热点阅读