繁体   English   中英

Spring WebFlux-无法在HandlerAdapter中返回HTTP响应

[英]Spring WebFlux - Unable to return HTTP response in HandlerAdapter

我试图在Spring WebFlux中重新创建HttpServletResponse#getWriter功能,但没有成功。

在Spring MVC中,我将扩展HandlerInterceptorAdapter ,使用提到的getWriter编写目标响应,并从preHandle方法返回false。 我正在尝试使用以下代码重新创建相同的功能。 请参阅以下摘录,以了解到目前为止我尝试过的没有成功的内容。

@Component
public class CustomInterceptor extends RequestMappingHandlerAdapter
    @Override
    public Mono<HandlerResult> handle(ServerWebExchange exchange, Object handler) {
        exchange.getResponse().writeWith(s -> Mono.just(new SomeDto()));
        // creates Internal Server Error, custom WebExceptionHandler not called
        return Mono.error(new RuntimeException());
        // creates Internal Server Error, custom WebExceptionHandler not called
        throw new RuntimeException();
        // ignores response write
        return super.handle(exchange, handler);
    }
}

我也尝试过使用WebFilter ,可以更改响应,但是无法访问HandlerMethod对象,这是进一步处理所必需的。

知道如何使用Spring WebFlux做到这一点吗? 欢迎所有想法。 谢谢。

可以在新的反应式WebFilter处理请求/响应,例如。

@Component
public class SecurityWebFilter implements WebFilter{
    @Override
    public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
        if(!exchange.getRequest().getQueryParams().containsKey("user")){
            exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);
        }
        return chain.filter(exchange);
    }
}

检查我完整的webfilter示例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM