首页 > 解决方案 > 在 webflux 中读取请求正文

问题描述

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-webflux 中使用 spring 5 进行一些自定义判断?

标签: spring-webfluxproject-reactorspring-cloud-gateway

解决方案


你的问题并不完全清楚。我假设您的疑问是您在代码片段注释中添加的内容。

可能有不同的方法来实现你想要的。一种简单的方法是使用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();
       });
  //...
}  

推荐阅读