在 webflux 中读取请求正文

read request body in 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 进行一些自定义判断?

你的问题不是很清楚。我假设您的疑问是您在代码片段注释中输入的内容。

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