spring-webflux - 在 webflux 中读取请求正文

标签 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中如何获取请求的body做一些自定义判断?

最佳答案

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

可能有不同的方法来实现你想要的。一种简单的方法是使用 flatMap运算符(operator)。大致如下:

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();
       });
  //...
}  

关于spring-webflux - 在 webflux 中读取请求正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51778234/

相关文章:

java - 在while循环中构建Flux对象

java - 从项目 react 器中的通量中采样除第一个元素之外的所有元素

spring-boot - Spring Cloud Gateway 和 Swagger 是否存在兼容性问题,出现错误

microservices - 为什么微服务推荐使用 API 网关?

spring - WebFilter bean 在安全的 Spring Boot Webflux 应用程序中调用了两次

java - Spring 5 - 如何提供静态资源

java - spring-boot-starter-webflux 和 spring-boot-starter-jetty 之间的冲突

project-reactor - 如何过滤掉空通量

java - Spring Cloud Gate 请求超时不适用于路径

spring-boot - 如何在spring boot 2中配置netty