在Webflux中读取请求正文

时间:2018-08-10 02:50:04

标签: spring-webflux project-reactor spring-cloud-gateway

public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
    Flux<DataBuffer> body = exchange.getRequest().getBody();
    //Return different according to body content...
    if (condition) {
        return chain.filter(exchange);
    } else {
        return Mono.empty();
    }
}  

如何在带有Spring 5的spring-webflux中获取请求的主体以进行一些自定义判断?

1 个答案:

答案 0 :(得分:1)

您的问题尚不完全清楚。我认为您的疑问是您在代码段注释中输入的内容。

可能有不同的方法来实现您想要的。一种简单的方法是使用flatMap运算符。如下所示:

public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
    Flux<DataBuffer> body = exchange.getRequest().getBody()
       .flatMap(data -> {
           if (condition) {
              return chain.filter(exchange);
           } 
           return Mono.empty();
       });
  //...
}