Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot Springboot网关使用RoutedDefinitionLocator通过路由维护元数据_Spring Boot_Spring Cloud Gateway - Fatal编程技术网

Spring boot Springboot网关使用RoutedDefinitionLocator通过路由维护元数据

Spring boot Springboot网关使用RoutedDefinitionLocator通过路由维护元数据,spring-boot,spring-cloud-gateway,Spring Boot,Spring Cloud Gateway,我已经实现了RouteDefinitionLocator,用于创建多个服务的RouteDefinition 我有两个url,我想获取路径信息(这些只是示例url,我有大约400个url) 我已覆盖getRouteDefinitions(),如下所示 现在如果我要求像http://localhost:8080/v1/products 然后在filter(CustomFilter)中,我想知道为调用后端服务器选择了哪个路由 因为基于所选的路由,我想向后端服务器传递一些信息 有人能帮我解决这个问题吗

我已经实现了RouteDefinitionLocator,用于创建多个服务的RouteDefinition

我有两个url,我想获取路径信息(这些只是示例url,我有大约400个url)

我已覆盖getRouteDefinitions(),如下所示

现在如果我要求像http://localhost:8080/v1/products

然后在filter(CustomFilter)中,我想知道为调用后端服务器选择了哪个路由

因为基于所选的路由,我想向后端服务器传递一些信息

有人能帮我解决这个问题吗

谢谢 阿尔佩什

1. POST /v1/products
2. PUT /v1/products/{id} 
public class CustomRouteDefinitionLocator implements RouteDefinitionLocator {

  @Override
  public Flux<RouteDefinition> getRouteDefinitions() {
    RouteDefinition routeDefinition = new RouteDefinition();
    routeDefinition.setUri(URI.create("http://localhost:8081"));

    PredicateDefinition predicate = new PredicateDefinition();
    predicate.setName(normalizeRoutePredicateName(PathRoutePredicateFactory.class));
    predicate.addArg(PATTERN_KEY, "/v1/products/**");
    routeDefinition.getPredicates().add(predicate);

    FilterDefinition filter = new FilterDefinition();
    filter.setName("CustomFilter");
    routeDefinition.getFilters().add(filter);

    Flux.just(routeDefinition);
  }
}
public class CustomFilter extends AbstractGatewayFilterFactory{

  @Override
  public GatewayFilter apply(Object config) {
    return new OrderedGatewayFilter((exchange, chain) -> {
      // Try to get Route path which selected by Gateway
      ServerHttpRequest request = exchange.getRequest();
      //business logic
      ServerWebExchange build = exchange.mutate().build();
      return chain.filter(build);
    }, 129);
  }
}