Spring Cloud Gateway отправляет еще один запрос на основе первого - PullRequest
0 голосов
/ 18 октября 2018

Я пытаюсь реализовать маршрут таким образом, чтобы, если первая маршрутизация прошла успешно (HTTP-200), я хотел бы отправить событие с полем из тела:

public RouteLocator customRouteLocator (RouteLocatorBuilder builder){
  return builder.routes()
    .route("myRoute", r -> r.path("/cars")
      .and()
      .method(HttpMethod.PUT)
      .filters(f -> f.prefixPath("/dealer"))
      .uri("http://httpbin.com")
      .filter(new GatewayFilter() {
        @Override
        public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
          ServerHttpRequest request = exchange.getRequest();
          ServerHttpResponse response = exchange.getResponse();
          HttpStatus statusCode = response.getStatusCode();

          //how can I make sure statusCode is not null?
          if (!statusCode.is2xxSuccessful()) {
            return chain.filter(exchange);
          }

          Flux<DataBuffer> requestBody = request.getBody();
          //Deserialize requestBody to a custom object
          String field = "???requestBody.???";//How to get this?
          try {
            sendMessage(field);
          } catch (Throwable ignore) {

          }

          return chain.filter(exchange);
        }
      })
    )
    .build();
}

Я добавил несколько комментариев во фрагменте.Я хотел бы убедиться, что ответ был успешным, а затем прочитать тело для пользовательского объекта и использовать этот объект, отправив еще один запрос на забытие.Я не мог понять, как справиться с этим.Спасибо ...

...